在web网页中,用户的一些行为,例如注册,登陆,付款,修改密码等,都须要网站经过手机验证码来确认其行为身份,从而保证用户帐户和网站自身的安全.web
网页中的验证码通常都是采用点击获取的方式,在实现页面的获取手机验证码按钮时,着重须要考虑的是如下几点:ajax
在这里咱们主要来实现前两项效果.
安全
保证网页刷新后验证码倒计时不清零须要使用cookie实现,为了不篇幅过长,内容杂乱,不作赘述.服务器
按钮能够用如下两种获取验证码的实现方法:
cookie
这两种方法虽然代码可能不一样,可是基本原理是差很少的,这里咱们就只使用第一种方法来进行说明.函数
通常验证码的页面HTML结构相似以下:post
<div> <p >请输入手机号:</p> <input class="phone" type="number"> <p>验证码:</p> <input type="number" name="" id=""> <input type="button" value="获取验证码" name="yzm" class="yzm" disabled="disabled"> <br><br> <input type="submit" value="提交"> </div>
页面如图:
网站
在输入正确格式的手机号码后,获取验证码按钮取消禁用状态,可点击.ui
点击后按钮再次进入禁用状态并开始倒计时,倒计时完毕后再次进入可点击状态.this
具体实现流程仍是比较简单的.代码以下:
$(document).ready(function(){ var ordertime=20 //设置再次发送验证码等待时间 var timeleft=ordertime var btn=$(".yzm") var phone=$(".phone") var reg = /^1[0-9]{10}$/; //电话号码的正则匹配式 phone.keyup(function(){ if (reg.test(phone.val())){ btn.removeAttr("disabled") //当号码符合规则后发送验证码按钮可点击 } else{ btn.attr("disabled",true) } }) //计时函数 function timeCount(){ timeleft-=1 if (timeleft>0){ btn.val(timeleft+" 秒后重发"); setTimeout(timeCount,1000) } else { btn.val("从新发送"); timeleft=ordertime //重置等待时间 btn.removeAttr("disabled"); } } //事件处理函数 btn.on("click",function(){ $(this).attr("disabled",true); //防止屡次点击 //此处可添加 ajax请求 向后台发送 获取验证码请求 timeCount(this); }) })
ajax请求格式大概以下,能够用于向服务器请求发送验证码到制定手机
$.ajax({
type: "POST", //用POST方式传输
dataType: "text", //数据格式:JSON
url: 'Login.ashx', //目标地址
data: "dealType=" + dealType +"&uid=" + uid + "&code=" + code, //post携带数据
error: function () { }, //请求错误时的处理函数
success: function (){ }, //请求成功时执行的函数
});
另外在实际开发中,还须要有与服务器验证用户填写验证码是否正确的ajax请求等,再加上使用cookie防止刷新页面致使倒计时失效的代码,实际开发的代码量会比上面多不少.
可是只要咱们掌握基本原理和实现思路,就能够很容易的实现项目要求.
但愿这篇文章对你有帮助.