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 相关文章推荐
List the Codec Files on a Computer
Jun 11 Javascript
JS中showModalDialog 的使用解析
Apr 17 Javascript
jquery获取选中的文本和值的方法
Jul 08 Javascript
浅谈javascript中for in 和 for each in的区别
Apr 23 Javascript
js实现导航吸顶效果
Feb 24 Javascript
xmlplus组件设计系列之路由(ViewStack)(7)
May 02 Javascript
详解vue-cli项目中用json-sever搭建mock服务器
Nov 02 Javascript
JS将网址url转化为JSON格式的方法
Jul 02 Javascript
JS中数组与对象的遍历方法实例小结
Aug 14 Javascript
JavaScript面试技巧之数组的一些不low操作
Mar 22 Javascript
echarts 使用formatter 修改鼠标悬浮事件信息操作
Jul 20 Javascript
VUE使用axios调用后台API接口的方法
Aug 03 Javascript
使用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
ThinkPHP之用户注册登录留言完整实例
2014/07/22 PHP
php的4种常见运行方式
2015/03/20 PHP
php自定义hash函数实例
2015/05/05 PHP
使用phpstorm和xdebug实现远程调试的方法
2015/12/29 PHP
Jquery工作常用实例 使用AJAX使网页进行异步更新
2011/07/26 Javascript
JavaScript实现的图像模糊算法代码分享
2014/04/22 Javascript
页面js遇到乱码问题的解决方法是和无法转码的情况
2014/04/30 Javascript
用原生js做个简单的滑动效果的回到顶部
2014/10/15 Javascript
js实现透明度渐变效果的方法
2015/04/10 Javascript
Javascript中prototype属性实现给内置对象添加新的方法
2015/05/14 Javascript
jQuery EasyUI 菜单与按钮之创建简单的菜单和链接按钮
2015/11/18 Javascript
angularjs表格分页功能详解
2016/01/21 Javascript
JavaScript中关键字 in 的使用方法详解
2016/10/17 Javascript
jQuery插件扩展操作入门示例
2017/01/16 Javascript
详解Vue.js 2.0 如何使用axios
2017/04/21 Javascript
vue开发调试神器vue-devtools使用详解
2017/07/13 Javascript
详解JS数值Number类型
2018/02/07 Javascript
全面解析vue router 基本使用(动态路由,嵌套路由)
2018/09/02 Javascript
javascript设计模式 ? 解释器模式原理与用法实例分析
2020/04/17 Javascript
JavaScript实现复选框全选和取消全选
2020/11/20 Javascript
Python中使用Flask、MongoDB搭建简易图片服务器
2015/02/04 Python
详解Python的Django框架中的Cookie相关处理
2015/07/22 Python
python+Splinter实现12306抢票功能
2018/09/25 Python
python 穷举指定长度的密码例子
2020/04/02 Python
一波HTML5 Canvas基础绘图实例代码集合
2016/02/28 HTML / CSS
海滩咖啡馆:Beach Cafe
2018/02/02 全球购物
.NET面试问题集
2015/12/08 面试题
什么时候需要进行强制类型转换
2016/09/03 面试题
中医专业职业生涯规划书范文
2014/01/04 职场文书
买房协议书
2014/04/11 职场文书
珍爱生命演讲稿
2014/05/10 职场文书
2015年三万活动总结
2015/03/25 职场文书
如何使JavaScript休眠或等待
2021/04/27 Javascript
MySQL 数据恢复的多种方法汇总
2021/06/21 MySQL
Java中多线程下载图片并压缩能提高效率吗
2021/07/01 Java/Android
python单向链表实例详解
2022/05/25 Python