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 相关文章推荐
MSN消息提示类
Sep 05 Javascript
基于JavaScript实现 获取鼠标点击位置坐标的方法
Apr 12 Javascript
script不刷新页面的联动前后代码
Sep 18 Javascript
ExtJS4如何自动生成控制grid的列显示、隐藏的checkbox
May 02 Javascript
jQuery基于cookie实现的购物车实例分析
Dec 24 Javascript
jQuery.form插件的使用及跨域异步上传文件
Apr 27 Javascript
JavaScript必知必会(五) eval 的使用
Jun 08 Javascript
jQuery表单验证简单示例
Oct 17 Javascript
Bootstrap表单制作代码
Mar 17 Javascript
详解React项目如何修改打包地址(编译输出文件地址)
Mar 21 Javascript
vue使用一些外部插件及样式的配置代码
Nov 18 Javascript
解决vue net :ERR_CONNECTION_REFUSED报错问题
Aug 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 expects parameter 1 to be resource, array given 错误
2011/03/23 PHP
分享PHP header函数使用教程
2013/09/05 PHP
PHP实现的连贯操作、链式操作实例
2014/07/08 PHP
thinkphp微信开之安全模式消息加密解密不成功的解决办法
2015/12/02 PHP
如何利用预加载优化Laravel Model查询详解
2017/08/11 PHP
PHP聚合式迭代器接口IteratorAggregate用法分析
2017/12/28 PHP
对laravel的session获取与存取方法详解
2019/10/08 PHP
PHP实现chrome表单请求数据转换为接口使用的json数据
2021/03/04 PHP
拖动Html元素集合 Drag and Drop any item
2006/12/22 Javascript
Jquery 扩展方法
2010/05/06 Javascript
JS小功能(checkbox实现全选和全取消)实例代码
2013/11/28 Javascript
easyui datagrid 键盘上下控制选中行示例
2014/03/31 Javascript
nodejs实现黑名单中间件设计
2014/06/17 NodeJs
深入探密Javascript数组方法
2015/01/08 Javascript
js中hash和ico的关联分析
2015/02/05 Javascript
JS实现点击上移下移LI行数据的方法
2015/08/05 Javascript
详谈Ajax请求中的async:false/true的作用(ajax 在外部调用问题)
2017/02/10 Javascript
Node.js和Express简单入门介绍
2017/03/24 Javascript
JavaScript实现焦点进入文本框内关闭输入法的核心代码
2017/09/20 Javascript
JS使用Prim算法和Kruskal算法实现最小生成树
2019/01/17 Javascript
vue.js实现会动的简历(包含底部导航功能,编辑功能)
2019/04/08 Javascript
简单了解vue中的v-if和v-show的区别
2019/10/08 Javascript
Vue防止白屏添加首屏动画的实例
2019/10/31 Javascript
微信小程序实现列表的横向滑动方式
2020/07/15 Javascript
python实现博客文章爬虫示例
2014/02/26 Python
django写用户登录判定并跳转制定页面的实例
2019/08/21 Python
信号生成及DFT的python实现方式
2020/02/25 Python
css3实现冲击波效果的示例代码
2018/01/11 HTML / CSS
美国生日蛋糕店:Bake Me A Wish!
2017/02/08 全球购物
Hawes & Curtis官网:英国经典品牌
2019/07/27 全球购物
政协会议宣传标语
2014/10/09 职场文书
起诉意见书范文
2015/05/19 职场文书
单身证明范本
2015/06/15 职场文书
七年级数学教学反思
2016/02/17 职场文书
MySQL 百万级数据的4种查询优化方式
2021/06/07 MySQL
Python NumPy灰度图像的压缩原理讲解
2021/08/04 Python