下面是详细的jquery实现无刷新验证码的简单实例攻略。
1.背景介绍
在很多网站上,为了防止机器人恶意攻击,需要使用验证码机制进行验证,这种机制一般需要用户手动输入验证码。但是,在某些场景下,这种验证码机制会带来很多不便,比如让用户反复输入、切换页面等。因此,我们需要一种更加友好的验证方式,即jquery实现无刷新验证码。
2.实现步骤
要实现jquery实现无刷新验证码,我们需要依次完成以下几个步骤。
2.1. 随机生成验证码
首先,我们需要随机生成验证码文本,然后在页面上显示出来,供用户输入。生成验证码的逻辑可以用PHP、Python等服务器端语言实现,也可以直接使用jquery。
function generateCode() {
var code = "";
var codeLength = 6; //验证码的位数
var chars = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; //验证码的可能字符
for (var i = 0; i < codeLength; i++) {
code += chars[Math.floor(Math.random() * 62)];
}
return code;
}
2.2. 显示验证码
我们可以将生成的验证码文本显示在一个div容器内,以便用户输入。
<div id="code" class="code"></div>
//生成并显示验证码
var code = generateCode();
$("#code").text(code);
2.3. 实现验证码刷新
为了提供更好的用户体验,我们应该提供一个“换一张”按钮,让用户可以刷新验证码。
<button id="refreshCode">换一张</button>
//刷新验证码
$("#refreshCode").click(function() {
var code = generateCode();
$("#code").text(code);
});
2.4. 检查验证码有效性
最后,当用户提交表单时,我们需要检查用户输入的验证码是否正确。
$("#submitBtn").click(function() {
var inputCode = $("#inputCode").val();
if (inputCode.toLowerCase() != code.toLowerCase()) {
alert("验证码错误,请重新输入!");
return false;
}
//验证码正确,继续表单提交
//...
});
其中,inputCode代表用户输入的验证码,code代表服务器端生成的验证码,toLowerCase()函数用于忽略大小写。
2.5. 完整示例说明
下面,我们来看两个示例,演示jquery实现无刷新验证码的完整过程。
示例1:基本实现
首先,我们通过以下代码生成并显示验证码。
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>jquery实现无刷新验证码的简单实例</title>
<script src="https://cdn.bootcss.com/jquery/3.5.1/jquery.min.js"></script>
<script>
//生成验证码
function generateCode() {
var code = "";
var codeLength = 6;
var chars = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
for (var i = 0; i < codeLength; i++) {
code += chars[Math.floor(Math.random() * 62)];
}
return code;
}
$(document).ready(function() {
var code = generateCode();
$("#code").text(code);
});
</script>
</head>
<body>
<div id="code" class="code"></div>
</body>
</html>
然后,我们为代码加入一个“换一张”按钮,当用户点击时,页面上的验证码会实时刷新。
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>jquery实现无刷新验证码的简单实例</title>
<script src="https://cdn.bootcss.com/jquery/3.5.1/jquery.min.js"></script>
<script>
//生成验证码
function generateCode() {
var code = "";
var codeLength = 6;
var chars = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
for (var i = 0; i < codeLength; i++) {
code += chars[Math.floor(Math.random() * 62)];
}
return code;
}
$(document).ready(function() {
refreshCode();
$("#refreshCode").click(function() {
refreshCode();
});
});
//刷新验证码
function refreshCode() {
var code = generateCode();
$("#code").text(code);
}
</script>
</head>
<body>
<div id="code" class="code"></div>
<button id="refreshCode">换一张</button>
</body>
</html>
最后,我们加入一个输入框和提交按钮,当用户提交表单时,页面会判断用户输入的验证码是否正确。
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>jquery实现无刷新验证码的简单实例</title>
<script src="https://cdn.bootcss.com/jquery/3.5.1/jquery.min.js"></script>
<script>
//生成验证码
function generateCode() {
var code = "";
var codeLength = 6;
var chars = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
for (var i = 0; i < codeLength; i++) {
code += chars[Math.floor(Math.random() * 62)];
}
return code;
}
$(document).ready(function() {
refreshCode();
$("#refreshCode").click(function() {
refreshCode();
});
$("#submitBtn").click(function() {
var inputCode = $("#inputCode").val();
if (inputCode.toLowerCase() != code.toLowerCase()) {
alert("验证码错误,请重新输入!");
return false;
}
//验证通过,继续表单提交
alert("验证码正确,表单已提交!");
});
});
//刷新验证码
function refreshCode() {
var code = generateCode();
$("#code").text(code);
}
</script>
</head>
<body>
<div id="code" class="code"></div>
<button id="refreshCode">换一张</button>
<br>
<input type="text" id="inputCode" name="code">
<button id="submitBtn">提交</button>
</body>
</html>
示例2:使用ajax方式验证
与示例1类似,我们可以通过以下代码生成并显示验证码。
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>jquery实现无刷新验证码的简单实例</title>
<script src="https://cdn.bootcss.com/jquery/3.5.1/jquery.min.js"></script>
<script>
//生成验证码
function generateCode() {
var code = "";
var codeLength = 6;
var chars = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
for (var i = 0; i < codeLength; i++) {
code += chars[Math.floor(Math.random() * 62)];
}
return code;
}
$(document).ready(function() {
var code = generateCode();
$("#code").text(code);
});
</script>
</head>
<body>
<div id="code" class="code"></div>
</body>
</html>
然后,我们为代码加入一个“换一张”按钮,当用户点击时,页面上的验证码会实时刷新。
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>jquery实现无刷新验证码的简单实例</title>
<script src="https://cdn.bootcss.com/jquery/3.5.1/jquery.min.js"></script>
<script>
//生成验证码
function generateCode() {
var code = "";
var codeLength = 6;
var chars = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
for (var i = 0; i < codeLength; i++) {
code += chars[Math.floor(Math.random() * 62)];
}
return code;
}
$(document).ready(function() {
refreshCode();
$("#refreshCode").click(function() {
refreshCode();
});
});
//刷新验证码
function refreshCode() {
var code = generateCode();
$("#code").text(code);
}
</script>
</head>
<body>
<div id="code" class="code"></div>
<button id="refreshCode">换一张</button>
</body>
</html>
最后,我们通过ajax方式验证用户输入的验证码。 在示例1中,当用户点击“提交”按钮时,页面会阻止表单的默认提交行为,并判断验证码是否正确。如果错误,弹出提示框;如果正确,则弹出成功提示框,并继续表单提交。 在示例2中,我们不使用“提交”按钮,而是通过ajax方法向服务器发送表单数据,并接收服务器的回复。当验证码错误时,服务器返回一个包含错误信息的json字符串;当验证码正确时,服务器返回一个空的json字符串。页面根据服务器的回复,弹出对应的提示框。
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>jquery实现无刷新验证码的简单实例</title>
<script src="https://cdn.bootcss.com/jquery/3.5.1/jquery.min.js"></script>
<script>
//生成验证码
function generateCode() {
var code = "";
var codeLength = 6;
var chars = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
for (var i = 0; i < codeLength; i++) {
code += chars[Math.floor(Math.random() * 62)];
}
return code;
}
$(document).ready(function() {
refreshCode();
$("#refreshCode").click(function() {
refreshCode();
});
$("#form").on("submit", function(event) {
event.preventDefault();
$("#submitBtn").attr("disabled", true);
var formData = {
name: $("#name").val(),
code: $("#inputCode").val()
};
$.ajax({
type: "POST",
url: "submit.php",
data: formData,
dataType: 'json',
encode: true
}).done(function(data) {
if (data.error) {
alert(data.error);
} else {
alert("验证码正确,表单已提交!");
}
}).fail(function(jqXHR, textStatus, errorThrown) {
console.log(jqXHR);
console.log(textStatus);
console.log(errorThrown);
}).always(function() {
$("#submitBtn").attr("disabled", false);
});
});
});
//刷新验证码
function refreshCode() {
var code = generateCode();
$("#code").text(code);
}
</script>
</head>
<body>
<form id="form">
<label for="name">姓名:</label>
<input type="text" id="name" name="name"><br>
<label for="inputCode">验证码:</label>
<input type="text" id="inputCode" name="code">
<div id="code" class="code"></div>
<button id="refreshCode">换一张</button>
<br>
<button type="submit" id="submitBtn">提交</button>
</form>
</body>
</html>
以上就是完整的jquery实现无刷新验证码的简单实例攻略。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:jquery实现无刷新验证码的简单实例 - Python技术站