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 相关文章推荐
js打开新窗口方法整理
Feb 17 Javascript
推荐10个2014年最佳的jQuery视频插件
Nov 12 Javascript
JavaScript中的console.dir()函数介绍
Dec 29 Javascript
JavaScript中诡异的delete操作符
Mar 12 Javascript
微信小程序中使元素占满整个屏幕高度实现方法
Dec 14 Javascript
微信小程序 switch组件详解及简单实例
Jan 10 Javascript
angular实现表单验证及提交功能
Feb 01 Javascript
基于Angularjs+mybatis实现二级评论系统(仿简书)
Feb 13 Javascript
vue-cli项目如何使用vue-resource获取本地的json数据(模拟服务端返回数据)
Aug 04 Javascript
详解Angular5 路由传参的3种方法
Apr 28 Javascript
js中offset,client , scroll 三大元素知识点总结
Sep 11 Javascript
vue项目打包之开发环境和部署环境的实现
Apr 23 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简单命令代码集锦
2007/09/24 PHP
PHP把MSSQL数据导入到MYSQL的方法
2014/12/27 PHP
php实现数据库的增删改查
2017/02/26 PHP
php实现断点续传大文件示例代码
2020/06/19 PHP
一段效率很高的for循环语句使用方法
2007/08/13 Javascript
用javascript实现计算两个日期的间隔天数
2007/08/14 Javascript
JavaScript 异步调用框架 (Part 5 - 链式实现)
2009/08/04 Javascript
js 获取屏幕各种宽高的方法(浏览器兼容)
2013/05/15 Javascript
extjs中form与grid交互数据(record)的方法
2013/08/29 Javascript
动态显示可输入的字数提示还可以输入的字数
2014/04/01 Javascript
超级好用的jQuery圆角插件 Corner速成
2014/08/31 Javascript
JS弹出层遮罩,隐藏背景页面滚动条细节优化分析
2016/04/29 Javascript
jQuery点击输入框显示验证码图片
2016/05/19 Javascript
JS简单实现tab切换效果的多窗口显示功能
2016/09/07 Javascript
详解vue嵌套路由-query传递参数
2017/05/23 Javascript
vue元素实现动画过渡效果
2017/07/01 Javascript
JavaScript实现一个带AI的井字棋游戏源码
2018/05/21 Javascript
细说webpack6 Babel的使用详解
2019/09/26 Javascript
JavaScript写个贪吃蛇小游戏(超详细)
2020/03/17 Javascript
[00:32]2018DOTA2亚洲邀请赛Newbee出场
2018/04/03 DOTA
[51:53]完美世界DOTA2联赛决赛日 Inki vs LBZS 第二场 11.08
2020/11/10 DOTA
python django事务transaction源码分析详解
2017/03/17 Python
python实现滑雪者小游戏
2020/02/22 Python
Python Tkinter Entry和Text的添加与使用详解
2020/03/04 Python
雷曼兄弟的五金店:Lehman’s Hardware Store
2019/04/10 全球购物
你所知道的集合类都有哪些?主要方法?
2012/12/31 面试题
JAVA语言如何进行异常处理,关键字:throws,throw,try,catch,finally分别代表什么意义?在try块中可以抛出异常吗?
2013/07/02 面试题
垃圾回收的优点和原理
2014/05/16 面试题
一套中级Java程序员笔试题
2015/01/14 面试题
财务学生的职业生涯发展
2014/02/11 职场文书
路政管理求职信
2014/06/18 职场文书
邓小平理论心得体会
2014/09/09 职场文书
2015社区健康教育工作总结
2015/05/20 职场文书
2016年中秋节晚会领导致辞
2015/11/26 职场文书
护理心得体会范文
2016/01/22 职场文书
浅谈Web Storage API的使用
2021/06/23 Javascript