原生JavaScript实现动态验证码生成与验证
作者:代码拾荒时间:2026-10-21 23:44:49浏览:77
本文介绍如何使用原生JavaScript生成随机验证码并实现前端验证逻辑。通过HTML5 Canvas或DOM元素绘制字符,结合事件监听实现点击刷新,并编写校验函数比对用户输入与生成结果,提供简洁的前端交互方案。
验证码功能实现概述
实现效果展示如下:

核心代码实现
具体代码实现如下:
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>js验证码</title>
<style type="text/css">
#code{
width:80px;
height:30px;
font-size:20px;
font-family:Arial;
font-style:italic;
font-weight:bold;
border:0;
letter-spacing:2px;
color:blue;
}
</style>
</head>
<body>
<div>
<input type = "text" id = "input"/>
<input type = "button" id="code" />
<input type = "button" value = "验证" id="check"/>
</div>
<script type="text/javascript">
window.onload=function(){
var code=document.getElementById("code");
function change(){
// 验证码组成库
var arrays=new Array(
'1','2','3','4','5','6','7','8','9','0',
'a','b','c','d','e','f','g','h','i','j',
'k','l','m','n','o','p','q','r','s','t',
'u','v','w','x','y','z',
'A','B','C','D','E','F','G','H','I','J',
'K','L','M','N','O','P','Q','R','S','T',
'U','V','W','X','Y','Z'
);
// 重新初始化验证码
codes ='';
// 随机从数组中获取四个元素组成验证码
for(var i = 0; i<4; i++){
// 随机获取一个数组的下标
var r = parseInt(Math.random()*arrays.length);
codes += arrays[r];
}
// 验证码添加到input里
code.value = codes;
}
change();//加载显示在页面上
code.onclick = change;//单击更换验证码
//单击验证
var check=document.getElementById("check");
var input=document.getElementById("input");
check.onclick=function(){
var inputCode = input.value.toUpperCase(); //取得输入的验证码并转化为大写
if(inputCode.length==0) { //若输入的验证码长度为0
alert("请输入验证码!"); //则弹出请输入验证码
}
else if(inputCode!=codes.toUpperCase()) { //若输入的验证码与产生的验证码不一致时
alert("验证码输入错误!请重新输入"); //则弹出验证码输入错误
change();//刷新验证码
input.value="";//清空文本框
}
else{ //输入正确时
alert("输入正确"); //弹出输入正确
}
}
}
</script>
</body>
</html>
以上即为完整的实现方案,旨在为读者的学习或实际工作提供参考与帮助,欢迎持续关注与支持。
作者最新文章
JavaScript异步发送HTTP请求时怎么优雅地处理错误
2026-11-05 17:10:44
5款主流JS在线运行工具对比:CodePen、JSFiddle与StackBlitz怎么选
2026-11-05 17:04:04
JavaScript入门书籍避坑:这些书不适合初学者
2026-11-05 16:31:15
JS使用Math.round实现保留两位小数的原理与代码
2026-11-05 15:35:55
JavaScript 原生 Date 对象怎么实现日期加减
2026-11-05 14:30:00
