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 相关文章推荐
Json字符串转换为JS对象的高效方法实例
May 01 Javascript
chrome下jq width()方法取值为0的解决方法
May 26 Javascript
JSON字符串转JSON对象
Jul 31 Javascript
AngularJs concepts详解及示例代码
Sep 01 Javascript
解决vue+webpack打包路径的问题
Mar 06 Javascript
Vuex的基本概念、项目搭建以及入坑点
Nov 04 Javascript
JS二级菜单不同实现方法分析【4种方法】
Dec 21 Javascript
vue模块拖拽实现示例代码
Mar 09 Javascript
vue设置一开始进入的页面教程
Oct 28 Javascript
vue中beforeRouteLeave实现页面回退不刷新的示例代码
Nov 01 Javascript
vue通过过滤器实现数据格式化
Jul 20 Javascript
Vue.Draggable实现交换位置
Apr 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
ajax缓存问题解决途径
2006/12/06 PHP
PHP 字符截取 解决中文的截取问题,不用mb系列
2009/09/29 PHP
php标签云的实现代码
2012/10/10 PHP
完美解决phpdoc导出文档中@package的warning及Error的错误
2016/05/17 PHP
php微信开发之谷歌测距
2018/06/14 PHP
如何在Web页面上直接打开、编辑、创建Office文档
2007/03/12 Javascript
javascript 限制输入和粘贴(IE,firefox测试通过)
2008/11/14 Javascript
基于jquery的多彩百分比 动态进度条 投票效果显示效果实现代码
2011/08/28 Javascript
input输入框的自动匹配(原生代码)
2013/03/19 Javascript
使用javascript过滤html的字符串(注释标记法)
2013/07/08 Javascript
js 获取元素下面所有li的两种方法
2014/04/14 Javascript
14个有用的Jquery技巧分享
2015/01/08 Javascript
Jquery实现仿腾讯娱乐频道焦点图(幻灯片)特效
2015/03/06 Javascript
浅谈jquery点击label触发2次的问题
2016/06/12 Javascript
JS正则子匹配实例分析
2016/12/22 Javascript
手把手搭建安装基于windows的Vue.js运行环境
2017/06/12 Javascript
React如何避免重渲染
2018/04/10 Javascript
nodejs文件夹深层复制功能
2019/09/03 NodeJs
Javascript地址引用代码实例解析
2020/02/25 Javascript
Python实现获取照片拍摄日期并重命名的方法
2017/09/30 Python
Python生成器定义与简单用法实例分析
2018/04/30 Python
python中字符串的操作方法大全
2018/06/03 Python
python3.X 抓取火车票信息【修正版】
2018/06/19 Python
详解Django解决ajax跨域访问问题
2018/08/24 Python
在Python中关于使用os模块遍历目录的实现方法
2019/01/03 Python
通俗讲解python 装饰器
2020/09/07 Python
python两个list[]相加的实现方法
2020/09/23 Python
台湾旅游网站:雄狮旅游网
2017/08/16 全球购物
捷克家居装饰及图书音像购物网站:Velký košík
2018/04/16 全球购物
Marc O’Polo俄罗斯官方在线商店:德国高端时尚品牌
2019/12/26 全球购物
什么是SCM(软件配置管理)
2014/08/16 面试题
优秀员工年终发言演讲稿
2014/01/01 职场文书
2014年秋季开学寄语
2014/08/02 职场文书
学校领导班子群众路线整改措施
2014/09/16 职场文书
老人与海读书笔记
2015/06/26 职场文书
python基于opencv批量生成验证码的示例
2021/04/28 Python