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 相关文章推荐
JavaScript 页面编码与浏览器类型判断代码
Jun 03 Javascript
js使用函数绑定技术改变事件处理程序的作用域
Dec 26 Javascript
javascript动态加载实现方法一
Aug 22 Javascript
JS 实现Json查询的方法实例
Apr 12 Javascript
jquery通过select列表选择框对表格数据进行过滤示例
May 07 Javascript
javascript实现下班倒计时效果的方法(可桌面通知)
Jul 10 Javascript
JS点击某个图标或按钮弹出文件选择框的实现代码
Sep 27 Javascript
vue中使用iview自定义验证关键词输入框问题及解决方法
Mar 26 Javascript
angular ng-model 无法获取值的处理方法
Oct 02 Javascript
手动下载Chrome并解决puppeteer无法使用问题
Nov 12 Javascript
小程序封装wx.request请求并创建接口管理文件的实现
Apr 29 Javascript
基于Vue el-autocomplete 实现类似百度搜索框功能
Oct 25 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
资料注册后发信小技巧
2006/10/09 PHP
PHP服务器页面间跳转实现方法
2012/08/02 PHP
php中http与https跨域共享session的解决方法
2014/12/20 PHP
php冒泡排序与快速排序实例详解
2015/12/07 PHP
javascript 放大镜 v1.0 基于Yui2 实现的放大镜效果
2010/03/08 Javascript
关于javascript中this关键字(翻译+自我理解)
2010/10/20 Javascript
javascript中验证大写字母、数字和中文
2014/01/15 Javascript
jQuery的3种请求方式$.post,$.get,$.getJSON
2014/03/28 Javascript
基于jquery实现最简单的选项卡切换效果
2016/05/08 Javascript
为什么JavaScript没有块级作用域
2016/05/22 Javascript
JS实现显示带倒影的图片横排居中放大展示特效实例【测试可用】
2016/08/23 Javascript
前端编码规范(3)JavaScript 开发规范
2017/01/21 Javascript
jQuery制作图片旋转效果
2017/02/02 Javascript
详解Vue使用命令行搭建单页面应用
2017/05/24 Javascript
mpvue微信小程序多列选择器用法之省份城市选择的实现
2019/03/07 Javascript
微信小程序 wx:for遍历循环使用实例解析
2019/09/09 Javascript
谈谈我在vue-cli3中用预渲染遇到的坑
2020/04/22 Javascript
Python使用CMD模块更优雅的运行脚本
2015/05/11 Python
使用paramiko远程执行命令、下发文件的实例
2017/10/01 Python
Python从Excel中读取日期一列的方法
2018/11/28 Python
关于Python作用域自学总结
2019/06/10 Python
Pandas时间序列基础详解(转换,索引,切片)
2020/02/26 Python
使用Python matplotlib作图时,设置横纵坐标轴数值以百分比(%)显示
2020/05/16 Python
Python基础教程(一)——Windows搭建开发Python开发环境
2020/07/20 Python
如何通过python计算圆周率PI
2020/11/11 Python
webapp字号大小跟随系统字号大小缩放的示例代码
2018/12/26 HTML / CSS
建筑行业的大学生自我评价
2013/12/08 职场文书
会计专业毕业生求职信分享
2014/01/03 职场文书
5.1手机促销活动
2014/01/17 职场文书
三方协议书范本
2014/04/22 职场文书
中学生演讲稿
2014/04/26 职场文书
分公司任命书
2014/06/06 职场文书
邀请函模板
2015/02/02 职场文书
个人工作表现自我评价
2015/03/06 职场文书
2015年董事长秘书工作总结
2015/07/23 职场文书
七年级生物教学反思
2016/02/20 职场文书