JS实现验证码倒计时的注册页面


Posted in Javascript onJanuary 02, 2018

JS实现验证码倒计时的注册页面 

原型图

需求:手机号验证

发送验证码之后开始60S倒计时

60s以后如果没有填写验证码,可重新发送

<!doctype html>
<html>
   <head>
      <meta charset="utf-8">
      <title>注册</title>
      <meta http-equiv="X-UA-Compatible" content="IE=edge">
      <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no">
      <meta name="format-detection" content="telephone=no">
      <meta name="renderer" content="webkit">
      <meta http-equiv="Cache-Control" content="no-siteapp" />
      <script src="http://code.jquery.com/jquery-latest.js";></script>
   </head>
   <body>
      <input type="text" id="phone" class="am-form-field my-radius" placeholder="请输入手机号" style="">
      <div style="height:2rem;">
         <font id="errMsg1" color="red" style=""></font>
      </div>
      <div>
         <input id="rpcode" type="text" placeholder="请输入验证码">
         <input id="getCode" type="button" value="获取验证码" onclick="sendMessages()"></input>
         <font id="errMsg2" color="red" style="display:none; position:absolution; top:2rem;"></font>
      </div>
      <p id="start">
         <span>开始</span>
      </p>
      <!-- 保存验证码 -->
      <input type="text" id="code" hidden="true">
      <script>
         var InterValObj; //timer变量,控制时间 
         var count = 60; //间隔函数,1秒执行 
         var curCount; //当前剩余秒数 
         var code = ""; //验证码 
         var codeLength = 6; //验证码长度 
         function sendMessages() {
            curCount = count;
            var phone = $("#phone").val()
            if(validatePhone(phone)) {
               return;
            }
            if(phone != "") {
               //设置button效果,开始计时 
               $("#getCode").attr("disabled", "true");
               $("#getCode").val("请在" + curCount + "秒内输入");
               InterValObj = window.setInterval(SetRemainTimes, 1000); //启动计时器,1秒执行一次 
               //向后台发送处理数据 
               $.ajax({
                  url: "getCode.action",
                  dataType: "json",
                  type: "get",
                  data: "phone=" + phone,
                  success: function(data) {
                     //保存验证码
                     $("#code").val(data);
                  }
               });
            } else {
               alert("手机号码不能为空!!!!!!");
            }
         }
         //timer处理函数 
         function SetRemainTimes() {
            if(curCount == 0) {
               window.clearInterval(InterValObj); //停止计时器 
               $("#getCode").removeAttr("disabled"); //启用按钮 
               $("#getCode").val("重新发送验证码");
               code = ""; //清除验证码。如果不清除,过时间后,输入收到的验证码依然有效   
            } else {
               curCount--;
               $("#getCode").val("请在" + curCount + "秒内输入");
            }
         }
         //开始按钮点击事件
         $("#start").click(function() {
            window.location.href = "regafter.html?phone=" + $("#phone").val();
         })
         //验证手机号
         function validatePhone(phone) {
            if(phone == '') {
               $("#errMsg1").html("  请先填写手机号");
               $("#errMsg1").show();
               return true;
            }
            var myreg = /^(((13[0-9]{1})|(15[0-9]{1})|(18[0-9]{1}))+\d{8})$/;
            if(!myreg.test(phone)) {
               $("#errMsg1").html("  请输入有效的手机号");
               $("#errMsg1").show();
               return true;
            }
            return false;
         }
         //验证码非空和错误验证
         function validateCode() {
            var phone = $("#phone").val();
            var code = $("#code").val();
            var rpcode = $("#rpcode").val();
            if(validatePhone(phone)) {
               return true;
            }
            if(code == '') {
               $("#errMsg2").html("  请先获取验证码");
               $("#errMsg2").show();
               return true;
            }
            if(rpcode == '' || code != rpcode) {
               $("#errMsg2").html("  请正确输入验证码");
               $("#errMsg2").show();
               return true;
            }
            alert(code != rpcode);
            return false;
         }
         $("#phone").on("focus", function() {
            $("#errMsg1").hide();
         })
         $("#rpcode").on("focus", function() {
            $("#errMsg2").hide();
         })
      </script>
   </body>
</html>
Javascript 相关文章推荐
基于JQuery制作的产品广告效果
Dec 08 Javascript
Ajax异步提交表单数据的说明及方法实例
Jun 22 Javascript
JavaScript中的slice()方法使用详解
Jun 06 Javascript
javascript多物体运动实现方法分析
Jan 08 Javascript
JavaScript实现时间倒计时跳转(推荐)
Jun 28 Javascript
JS实现拖拽的方法分析
Dec 20 Javascript
JS实现的简单四则运算计算器功能示例
Sep 27 Javascript
JS实现自定义状态栏动画文字效果示例
Oct 12 Javascript
解决LayUI表单获取不到data的问题
Aug 20 Javascript
详解Vue组件插槽的使用以及调用组件内的方法
Nov 13 Javascript
教你30秒发布一个TypeScript包到NPM的方法步骤
Jul 22 Javascript
详解Vue中的自定义指令
Dec 07 Vue.js
使用socket.io实现简单聊天室案例
Jan 02 #Javascript
使用socket.io制做简易WEB聊天室
Jan 02 #Javascript
AngularJS实现的简单拖拽功能示例
Jan 02 #Javascript
AngularJS实现的锚点楼层跳转功能示例
Jan 02 #Javascript
jQuery实现手机号正则验证输入及自动填充空格功能
Jan 02 #jQuery
Node实战之不同环境下配置文件使用教程
Jan 02 #Javascript
jQuery动态添加元素无法触发绑定事件的解决方法分析
Jan 02 #jQuery
You might like
PHP5.2中date()函数显示时间与北京时间相差8小时的解决办法
2009/05/28 PHP
php checkdate、getdate等日期时间函数操作详解
2010/03/11 PHP
PHP中VC6、VC9、TS、NTS版本的区别与用法详解
2013/10/26 PHP
使用PHP生成二维码的方法汇总
2015/07/22 PHP
php用户注册信息验证正则表达式
2015/11/12 PHP
PHP实现QQ登录的开原理和实现过程
2018/02/04 PHP
关于Mozilla浏览器不支持innerText的解决办法
2011/01/01 Javascript
JS获取页面窗口大小的代码解读
2011/12/01 Javascript
jquery如何判断某元素是否具备指定的样式
2013/11/05 Javascript
JavaScript中for..in循环陷阱介绍
2013/11/12 Javascript
jQuery异步上传文件插件ajaxFileUpload详细介绍
2015/05/19 Javascript
jQuery实现图片渐入渐出切换展示效果
2015/08/15 Javascript
AngularJs中route的使用方法和配置
2016/02/04 Javascript
浅析JavaScript中break、continue和return的区别
2016/11/30 Javascript
jQuery Easyui加载表格出错时在表格中间显示自定义的提示内容
2016/12/08 Javascript
jQuery Validate让普通按钮触发表单验证的方法
2016/12/15 Javascript
js实现做通讯录的索引滑动显示效果和滑动显示锚点效果
2017/02/18 Javascript
node基于puppeteer模拟登录抓取页面的实现
2018/05/09 Javascript
JS中的算法与数据结构之常见排序(Sort)算法详解
2019/08/16 Javascript
深入理解redux之compose的具体应用
2020/01/12 Javascript
ES6 async、await的基本使用方法示例
2020/06/06 Javascript
[12:51]71泪洒现场!是DOTA2让经典重现
2014/03/24 DOTA
[55:42]VG vs VGJ.T 2018国际邀请赛淘汰赛BO1 8.21
2018/08/22 DOTA
浅析Python的Django框架中的Memcached
2015/07/23 Python
Python基于二分查找实现求整数平方根的方法
2016/05/12 Python
Python range、enumerate和zip函数用法详解
2019/09/11 Python
Python字典dict常用方法函数实例
2020/11/09 Python
用CSS3实现无限循环的无缝滚动的实例代码
2017/07/04 HTML / CSS
HTML5 Canvas绘制文本及图片的基础教程
2016/03/14 HTML / CSS
FragranceNet中文网:北美健康美容线上零售商
2020/08/26 全球购物
机械电子工程专业推荐信范文
2013/11/20 职场文书
客服部工作职责范本
2014/02/14 职场文书
乡镇党员干部四风对照检查材料思想汇报
2014/09/27 职场文书
个人四风问题对照检查材料
2014/10/01 职场文书
教育合作协议范本
2014/10/17 职场文书
Python通用验证码识别OCR库ddddocr的安装使用教程
2022/07/07 Python