在制作网站注册时,遇到了 手机验证码的问题,虽然不是做前端的,但是 作业需要,自己还是老实的写了个按钮倒计时的js事件。
记得引入jquery文件:
servlet接收端:
在做网站收集验证码的过程中,使用的是阿里大鱼(阿里巴巴的产品),比较可靠,而且速度很快,对于做作业的学生来说不需要什么成本,测试成功,在后期的博文中会给大家 介绍和基本的使用。
主要实现的功能:
- 点击下按钮时,开始倒数计时。
- 当计数为0的时候,回到原状态,不进行计数
- 再次点击进行计数
实现步骤:
- 获得id对应的标签
- 设置该标签value为number--;从60倒数计时
- 计数为0,设置value=原内容,并将number重新赋值为60
- 计数不为0就setTimeout重复执行该function
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
<script language="javascript">
var $ =function(id){
return document.getElementById(id);
};
var number=60;
function click1(){
$("get_pass").value=number+"秒";
number=number-1;
//当计数为0的时候,还原内容 并将number=60
if(number<0){
$("get_pass").removeAttribute("disabled");
$("get_pass").value="获取验证码";
number=60;
}else{
$("get_pass").setAttribute("disabled",false);
setTimeout("click1()",1000);
}
}
</script>
</head>
<body>
<input id="get_pass" type="button" class="phone_button" value="获取验证码" onClick="click1()">
</body>
</html>
另一种交互的ajax:
var InterValObj; //timer变量,控制时间
var count = 5; //间隔函数,1秒执行
var curCount;//当前剩余秒数
var code = ""; //验证码
var codeLength = 4;//验证码长度
function sendMessage() {
curCount = count;
// var dealType; //验证方式
// var uid=$("#uid").val();//用户uid
// if ($("#phone").attr("checked") == true) {
// dealType = "phone";
// }
// else {
// dealType = "email";
// }
//产生验证码
for (var i = 0; i < codeLength; i++) {
code += parseInt(Math.random() * 9)+"";
}
//设置button效果,开始计时
$("#get_pass").attr("disabled", "true");
$("#get_pass").val("请在" + curCount + "秒内输入验证码");
InterValObj = window.setInterval(SetRemainTime, 1000); //启动计时器,1秒执行一次
//向后台发送处理数据
$.ajax({
type: "POST", //用POST方式传输
url:"RegistServlet?code="+code+"", //目标地址 是一个servlet
error: function (XMLHttpRequest, textStatus, errorThrown) { },
success: function (msg){ }
});
}
//timer处理函数
function SetRemainTime() {
if (curCount == 0) {
window.clearInterval(InterValObj);//停止计时器
$("#get_pass").removeAttr("disabled");//启用按钮
$("#get_pass").val("重新发送验证码");
code = ""; //清除验证码。如果不清除,过时间后,输入收到的验证码依然有效
}
else {
curCount--;
$("#get_pass").val("请在" + curCount + "秒内输入验证码");
}
}
/* 点击验证码改变有验证码的Js事件 */
function changeImage(){
/* 调用servlet进行显示 */
document.getElementById("image").src = "ChecKImageServlet?"+ new Date().getTime();
}
html 代码:<input id="get_pass" type="button" class="phone_button" value="获取验证码" onClick="sendMessage()">
记得引入jquery文件:
<script src="js/jquery-1.7.2.min.js" type="text/javascript"></script>
servlet接收端:
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String codeString = request.getParameter("code");
//测试输出
System.out.println(codeString);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//相互调用
doGet(request, response);
}