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 22 Javascript
多种方法实现JS动态添加事件
Nov 01 Javascript
javascript实现数独解法
Mar 14 Javascript
javascript实现对表格元素进行排序操作
Nov 18 Javascript
JS中JSON对象和String之间的互转及处理技巧
Apr 06 Javascript
js css3实现图片拖拽效果
Mar 04 Javascript
vue如何从接口请求数据
Jun 22 Javascript
JavaScript实现的仿新浪微博原生态输入字数即时检查功能【兼容IE6】
Sep 26 Javascript
解决vue组件中使用v-for出现告警问题及v for指令介绍
Nov 11 Javascript
Vue.js组件间通信方式总结【推荐】
Nov 23 Javascript
详解前端任务构建利器Gulp.js使用指南
Apr 30 Javascript
基于JavaScript实现省市联动效果
Jun 22 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
虫族 Zerg 魔法科技
2020/03/14 星际争霸
PHP中动态显示签名和ip原理
2007/03/28 PHP
Apache服务器下防止图片盗链的办法
2015/07/06 PHP
PHP记录页面停留时间的方法
2016/03/30 PHP
PHP list() 将数组中的值赋给变量的简单实例
2016/06/13 PHP
PHP用函数嵌入网站访问量计数器
2017/10/27 PHP
php获取手机端的号码以及ip地址实例代码
2018/09/12 PHP
用roll.js实现的图片自动滚动+鼠标触动的特效
2007/03/18 Javascript
Javascript 日期对象Date扩展方法
2009/05/30 Javascript
浅谈关于JavaScript的语言特性分析
2013/04/11 Javascript
JS实现文字放大效果的方法
2015/03/03 Javascript
Position属性之relative用法
2015/12/14 Javascript
使用jquery提交form表单并自定义action的实现代码
2016/05/25 Javascript
jQuery1.9+中删除了live以后的替代方法
2016/06/17 Javascript
Bootstrap中点击按钮后变灰并显示加载中实例代码
2016/09/23 Javascript
Angular.js中angular-ui-router的简单实践
2017/07/18 Javascript
利用JavaScript实现栈的数据结构示例代码
2017/08/02 Javascript
实现一个完整的Node.js RESTful API的示例
2017/09/29 Javascript
JavaScript中toLocaleString()和toString()的区别实例分析
2018/08/14 Javascript
使用webpack将ES6转化ES5的实现方法
2019/10/13 Javascript
vue实现商城秒杀倒计时功能
2019/12/12 Javascript
antd日期选择器禁止选择当天之前的时间操作
2020/10/29 Javascript
vue3.0 项目搭建和使用流程
2021/03/04 Vue.js
python打开网页和暂停实例
2014/09/30 Python
Python多线程编程简单介绍
2015/04/13 Python
python 异常处理总结
2016/10/18 Python
Python实现的求解最小公倍数算法示例
2018/05/03 Python
对python创建及引用动态变量名的示例讲解
2018/11/10 Python
Django model select的多种用法详解
2019/07/16 Python
pytorch实现focal loss的两种方式小结
2020/01/02 Python
tensorflow 实现打印pb模型的所有节点
2020/01/23 Python
Django Model层F,Q对象和聚合函数原理解析
2020/11/12 Python
同步和异步有何异同,在什么情况下分别使用他们
2013/04/09 面试题
股指期货心得体会
2014/09/10 职场文书
群众路线教育实践活动对照检查材料
2014/09/22 职场文书
在js中修改html body的样式
2021/11/11 Javascript