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 相关文章推荐
如何实现浏览器上的右键菜单
Jul 10 Javascript
firefox浏览器下javascript 拖动层效果与原理分析代码
Dec 04 Javascript
DOM 脚本编程中的兄弟节点
Oct 31 Javascript
在JavaScript里防止事件函数高频触发和高频调用的方法
Sep 06 Javascript
jQuery Ajax中的事件详细介绍
Apr 16 Javascript
IE6-IE9使用JSON、table.innerHTML所引发的问题
Dec 22 Javascript
基于KO+BootStrap+MVC实现的分页控件代码分享
Nov 07 Javascript
详解jQuery的Cookie插件
Nov 23 Javascript
基于Bootstrap表单验证功能
Nov 17 Javascript
zTree 树插件实现全国五级地区点击后加载的示例
Feb 05 Javascript
vue.js+element-ui动态配置菜单的实例
Sep 07 Javascript
Vue-不允许嵌套式的渲染方法
Sep 13 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
PHP开发负载均衡指南
2010/07/17 PHP
php和redis实现秒杀活动的流程
2019/07/17 PHP
漂亮的仿flash菜单,来自蓝色经典
2006/06/26 Javascript
Jquery 高亮显示文本中重要的关键字
2009/12/24 Javascript
JS连接SQL数据库与ACCESS数据库的方法实例
2013/11/21 Javascript
完美兼容各大浏览器获取HTTP_REFERER方法总结
2014/06/24 Javascript
javascript动画算法实例分析
2015/07/31 Javascript
Javascript中replace()小结
2015/09/30 Javascript
基于jQuery实现文本框只能输入数字(小数、整数)
2016/01/14 Javascript
使用jQuery中的wrap()函数操作HTML元素的教程
2016/05/24 Javascript
js实现目录链接,内容跟着目录滚动显示的简单实例
2016/10/15 Javascript
Angular下H5上传图片的方法(可多张上传)
2017/01/09 Javascript
angularJs中$scope数据序列化的实例
2018/09/30 Javascript
Vue触发式全局组件构建的方法
2018/11/28 Javascript
产制造追溯系统之通过微信小程序实现移动端报表平台
2019/06/03 Javascript
小程序按钮避免多次调用接口和点击方案实现(不用showLoading)
2020/04/15 Javascript
[52:52]DOTA2上海特级锦标赛C组资格赛#1 OG VS LGD第三局
2016/02/27 DOTA
[03:40]DOTA2抗疫特别篇《英雄年代》
2020/02/28 DOTA
Python 中的with关键字使用详解
2016/09/11 Python
Python中矩阵库Numpy基本操作详解
2017/11/21 Python
python批量读取txt文件为DataFrame的方法
2018/04/03 Python
在pycharm上mongodb配置及可视化设置方法
2018/11/30 Python
Django自定义模板过滤器和标签的实现方法
2019/08/21 Python
Python运行DLL文件的方法
2020/01/17 Python
python实现与redis交互操作详解
2020/04/21 Python
解析Python 偏函数用法全方位实现
2020/06/26 Python
详解纯CSS3制作的20种loading动效
2017/07/05 HTML / CSS
HTML5 本地存储和内容按需加载的思路和方法
2011/04/07 HTML / CSS
Crocs美国官方网站:卡骆驰洞洞鞋
2017/08/04 全球购物
冰淇淋店的创业计划书
2014/02/07 职场文书
安全生产承诺书
2014/03/26 职场文书
安全生产一岗双责责任书
2014/07/28 职场文书
船舶工程技术专业求职信
2014/08/07 职场文书
工作失误检讨书
2015/01/26 职场文书
2020年元旦晚会策划书模板
2019/12/30 职场文书
Redis唯一ID生成器的实现
2022/07/07 Redis