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 相关文章推荐
ie 处理 gif动画 的onload 事件的一个 bug
Apr 12 Javascript
jquery创建div 实现代码
Apr 27 Javascript
谈一谈javascript闭包
Jan 28 Javascript
原生JS和jQuery版实现文件上传功能
Apr 18 Javascript
js 文字超出长度用省略号代替,鼠标悬停并以悬浮框显示实例
Dec 06 Javascript
Bootstrap CSS布局之代码
Dec 17 Javascript
EasyUI学习之Combobox下拉列表(1)
Dec 29 Javascript
详解Vue 开发模式下跨域问题
Jun 06 Javascript
laydate 显示结束时间不小于开始时间的实例
Aug 11 Javascript
vue多级复杂列表展开/折叠及全选/分组全选实现
Nov 05 Javascript
layui实现多图片上传并限制上传的图片数量
Sep 26 Javascript
解决layui页面按钮点击无反应,也不报错的问题
Sep 29 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
无线电波是什么?它是怎样传输的?
2021/03/01 无线电
关于在php.ini中添加extension=php_mysqli.dll指令的说明
2007/06/14 PHP
PHP常用算法和数据结构示例(必看篇)
2017/03/15 PHP
PHP7扩展开发之hello word实现方法详解
2018/01/15 PHP
PHP实现可精确验证身份证号码的工具类示例
2018/05/31 PHP
php设计模式之模板模式实例分析【星际争霸游戏案例】
2020/03/24 PHP
去除链接虚线全面分析总结
2006/08/15 Javascript
javascript中的对象创建 实例附注释
2011/02/08 Javascript
基于jquery的无限级联下拉框js插件
2011/10/29 Javascript
表单序列化与jq中的serialize使用示例
2014/02/21 Javascript
js完美实现@提到好友特效(兼容各大浏览器)
2015/03/16 Javascript
Bootstrap使用基础教程详解
2016/09/05 Javascript
jQuery插件FusionWidgets实现的Cylinder图效果示例【附demo源码】
2017/03/23 jQuery
ionic2打包android时gradle无法下载的解决方法
2017/04/05 Javascript
Angular 4依赖注入学习教程之InjectToken的使用(八)
2017/06/04 Javascript
详解Angular2组件之间如何通信
2017/06/22 Javascript
js中如何完美的解析数据
2018/03/18 Javascript
.vue文件 加scoped 样式不起作用的解决方法
2018/05/28 Javascript
js运算符的一些特殊用法
2018/07/29 Javascript
js限制输入框只能输入数字(onkeyup触发)
2018/09/28 Javascript
微信小程序发布新版本时自动提示用户更新的方法
2019/06/07 Javascript
Python实现简单拆分PDF文件的方法
2015/07/30 Python
使用Python的urllib2模块处理url和图片的技巧两则
2016/02/18 Python
python多线程方式执行多个bat代码
2016/06/07 Python
python字典和json.dumps()的遇到的坑分析
2020/03/11 Python
Python3基于print打印带颜色字符串
2020/07/06 Python
使用Python+Appuim 清理微信的方法
2021/01/26 Python
详解css3 Transition属性(平滑过渡菜单栏案例)
2017/09/05 HTML / CSS
为什么如下的代码int a=100,b=100;long int c=a * b;不能工作
2013/11/29 面试题
小学新学期教师寄语
2014/01/18 职场文书
大学生家政服务项目创业计划书
2014/01/30 职场文书
运动会领导邀请函
2014/02/05 职场文书
和谐家庭演讲稿
2014/05/24 职场文书
四风对照检查材料思想汇报
2014/09/20 职场文书
解决numpy数组互换两行及赋值的问题
2021/04/17 Python
Python数据可视化之基于pyecharts实现的地理图表的绘制
2021/06/10 Python