WEB开发之注册页面验证码倒计时代码的实现


Posted in Javascript onDecember 15, 2016

近期因为开发一个新的H5+backbone 项目,验证输入手机号 验证码倒计时功能。

WEB开发之注册页面验证码倒计时代码的实现WEB开发之注册页面验证码倒计时代码的实现

#如上图所示 要实现验证码的倒计时的效果

  • 首先做页面的布局
  • 理清楚页面效果需要实现的逻辑思路
  • 对手机号及验证码和密码做正则的规则校验

前端样式布局代码

<ul>
 <li class="phone bgImg">
   <input type="text" id="phone" maxlength="11" placeholder="手机号"/>
  </li>
  <li class="vCodeImg bgImg" id="sendVCode">
   <input type="text" id="smscode" maxlength="10" placeholder="验证码"/>
   <a class="get" href="#" id="sendCode">获取</a>
   <label class="noVcode" id="notSms" hidden><i>10s</i><a href="#">|收不到验证码</a></label>
  </li>
  <li class="password bgImg">
   <input type="text" id="password" maxlength="10" placeholder="6-10位数字&字母组合登录密码"/>
   <a href="#" class="invisible bgImg"></a>
  </li>
 </ul>

后端逻辑实现

首先先做下说明,因为自己公司的框架部分,对整个项目做了三层框架的架构划分,可同时支持iOS,Android,Web端.

首先去调取我要注册的api接口部分

 1:调取register 注册接口

doPost(proxy.apis.register, {}, {
  success:function (data) {
   $$('#Register').off();
   var btn = $$("#Register");
  }
 });

 2:这个是调取的api接口部分

register:'/auth/register',   /*注册*/
 login:'/auth/login',    /*登录*/
 send_code:"/auth/getValidCode" /*发送验证码*/

 3:方法的定义放在最外面

that.eventsHandler();
 that.registerSubmit();
 that.sendMessage();
registerSubmit : function(){
   $('#Register').off('click').on('click',function(){
    // debugger;
    var phoneVal = $$.trim($$('#phone').val());
    var smsCodeVal = $$.trim($$('#smscode').val());
    var passwordVal = $$('#password').prop('value').trim();
    if (phoneVal == '') {
     popup('', '', '请输入手机号');
     return false;
    }
    var verifyphone = __reg__.phone;
    if(!verifyphone.test(phoneVal)){
     popup('','','手机号码格式错误');
     return false;
    }
    if (smsCodeVal == '') {
     popup('','','请发送短信验证码');
     return;
    }
    if (passwordVal == '') {
     popup('','','请输入密码');
     return;
    }
    $$("#Register").off('click');
   });
  },
  sendMessage : function () {
   var intervalInt;
   var sendCode = $$('#sendCode');
   var notSms = $$('#notSms');
   function sendFn() {
    sendCode.val(10).hide().off('click');
    notSms.show().off('click').on('click',notSms_click).css('color','#40cbff');
    intervalInt = setInterval(timeFn,1000);
    /*doPost(proxy.apis.send_code, {"phone":sendData.phone,"type":"borrowSms"}, {
     success:function (data) {
     if (data.status != '1') {
     popup('', '','发送短信出错');
     }
     },
     error:function(data){
     popup('', '', data.msg);
     }
     });*/
   }
   function timeFn() {
    var secondVal = sendCode.val();
    sendCode.val(secondVal - 1);
    notSms.find('i').html(secondVal-1 + 's');
    if (sendCode.val() == 0 ) {
     // debugger
     notSms.hide();
     clearInterval(intervalInt);
     sendCode.show().on('click',sendFn);
    }
   }
   function notSms_click() {
    notSms.css('color','gray');
    dialog('获取语音验证码', '验证码将以电话形式通知到你,请注意接听??', 'OK', function () {
     $$('#notSms').off('click');
     doPost(proxy.apis.send_code, {"phone": phone, "type": "registerVoice"}, {
      success: function (data) {
       if (data.status != '1') {
        popup('', '', data.msg);
       }
      },
      error: errorFn
     });
    });
   }
   sendCode.off('click').on('click',sendFn);
  }

这里列出一个和本文无关的但是有用的正则校验:(name)姓名中带点的·名字的校验,如  买买提·古力娜扎·阿凡提

var __reg__ = {
 'name':/^[\u4E00-\u9FA5]+(·[\u4E00-\u9FA5]+)*$/,
 'phone':/^1[34578]\d{9}$/
};

这里说一个timeFn() 方法,其实当我点开申请按钮的时候,你看到的是秒数在倒计时,其实这里做了2件事,第一是我给了一个数从60s开始,这个数值是写死的,endCode.val(10).hide().off('click');,然后通过sendCode去取当前的秒数值,再依次做减法运算,直到秒数减到为0.在显示 “申请”按钮 sendCode.show().on('click',sendFn);

var secondVal = sendCode.val();
 sendCode.val(secondVal - 1);
 notSms.find('i').html(secondVal-1 + 's');

这样就实现了一个验证码倒计时的效果,这里提个醒:写每个方法的时候,要看清是在内部写还是在外部写,是不是在方法的作用范围内,不然click事件的触发效果是不会实现出来的.

希望本文所述对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
javascript 关于# 和 void的区别分析
Oct 26 Javascript
JavaScript为对象原型prototype添加属性的两种方式
Aug 01 Javascript
实现checkbox全选、反选、取消JavaScript小脚本异常
Apr 10 Javascript
jQuery中队列queue()函数的实例教程
May 03 Javascript
原生JS版和jquery版实现checkbox的全选/全不选/点选/行内点选(Mr.Think)
Oct 29 Javascript
强大的 Angular 表单验证功能详细介绍
May 23 Javascript
jQuery EasyUI的TreeGrid查询功能实现方法
Aug 08 jQuery
javascript自定义事件功能与用法实例分析
Nov 08 Javascript
pace.js和NProgress.js两个加载进度插件的一点小总结
Jan 31 Javascript
jQuery实现基本隐藏与显示效果的方法详解
Sep 05 jQuery
vue axios请求频繁时取消上一次请求的方法
Nov 10 Javascript
Vue实现点击箭头上下移动效果
Jun 11 Javascript
浅谈javascript alert和confirm的美化
Dec 15 #Javascript
JavaScript模板引擎Template.js使用详解
Dec 15 #Javascript
原生JS实现图片轮播切换效果
Dec 15 #Javascript
javascript中数组(Array)对象和字符串(String)对象的常用方法总结
Dec 15 #Javascript
利用vue写todolist单页应用
Dec 15 #Javascript
jquery插件bootstrapValidator表单验证详解
Dec 15 #Javascript
jQuery中的100个技巧汇总
Dec 15 #Javascript
You might like
PHP setcookie指定domain参数后,在IE下设置cookie失效的解决方法
2011/09/09 PHP
php分割合并两个字符串的函数实例
2015/06/19 PHP
PHP生成随机数的方法总结
2018/03/01 PHP
使用JavaScript实现Java的List功能(实例讲解)
2013/11/07 Javascript
浅谈JavaScript的事件
2015/02/27 Javascript
js ajaxfileupload.js上传报错的解决方法
2016/05/05 Javascript
jQuery中值得注意的trigger方法浅析
2016/12/12 Javascript
JS实现的简单拖拽购物车功能示例【附源码下载】
2018/01/03 Javascript
vuejs实现递归树型菜单组件
2018/01/13 Javascript
vue cli构建的项目中请求代理与项目打包问题
2018/02/26 Javascript
深入浅析vue-cli@3.0 使用及配置说明
2019/05/08 Javascript
详解vue微信网页授权最终解决方案
2019/06/16 Javascript
微信小程序wx.navigateTo中events属性实现页面间通信传值,数据同步
2019/07/13 Javascript
vue 使用高德地图vue-amap组件过程解析
2019/09/07 Javascript
Node.js API详解之 net模块实例分析
2020/05/18 Javascript
js实现手表表盘时钟与圆周运动
2020/09/18 Javascript
nodejs中使用worker_threads来创建新的线程的方法
2021/01/22 NodeJs
python MySQLdb Windows下安装教程及问题解决方法
2015/05/09 Python
深入讲解Python中面向对象编程的相关知识
2015/05/25 Python
Python实现破解猜数游戏算法示例
2017/09/25 Python
python os.path模块常用方法实例详解
2018/09/16 Python
python三方库之requests的快速上手
2019/03/04 Python
快速排序的四种python实现(推荐)
2019/04/03 Python
机器学习实战之knn算法pandas
2019/06/22 Python
Django实现内容缓存实例方法
2020/06/30 Python
Python性能分析工具py-spy原理用法解析
2020/07/27 Python
python实现学生通讯录管理系统
2021/02/25 Python
Europcar英国:英国汽车和货车租赁
2017/01/21 全球购物
亚马逊意大利站点:Amazon.it
2020/12/31 全球购物
毕业生求职简历中的自我评价
2013/10/18 职场文书
教师求职信范文分享
2013/12/27 职场文书
竟聘演讲稿范文
2013/12/31 职场文书
打造高效课堂实施方案
2014/03/22 职场文书
关于诚信的活动方案
2014/08/18 职场文书
先进个人总结范文
2015/02/15 职场文书
优秀范文:读《红岩》有感3篇
2019/10/14 职场文书