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函数ajax
Aug 20 Javascript
游览器中javascript的执行过程(图文)
May 20 Javascript
你必须知道的JavaScript 变量命名规则详解
May 07 Javascript
JQUERY 设置SELECT选中项代码
Feb 07 Javascript
js获取元素相对窗口位置的实现代码
Sep 28 Javascript
JavaScript中的eval()函数使用介绍
Dec 31 Javascript
Lab.js初次使用笔记
Feb 28 Javascript
jQuery 中ajax异步调用的四种方式
Jun 28 Javascript
用jQuery实现优酷首页轮播图
Jan 09 Javascript
React-Native左右联动List的示例代码
Sep 21 Javascript
微信小程序实现图片上传功能实例(前端+PHP后端)
Jan 10 Javascript
JavaScript代码实现txt文件的上传预览功能
Mar 27 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
德生S2000收音机更换“钕铁硼”全频扬声器
2021/03/02 无线电
简单的页面缓冲技术
2006/10/09 PHP
PHP中file_get_contents函数抓取https地址出错的解决方法(两种方法)
2015/09/22 PHP
php中10个不同等级压缩优化图片操作示例
2016/11/14 PHP
jquery实现居中弹出层代码
2010/08/25 Javascript
js二维数组排序的简单示例代码
2014/01/24 Javascript
node.js中的path.basename方法使用说明
2014/12/09 Javascript
JavaScript中Function()函数的使用教程
2015/06/04 Javascript
nodejs实现获取当前url地址及url各种参数值
2015/06/25 NodeJs
JavaScript构造函数详解
2015/12/27 Javascript
JQuery 两种方法解决刚创建的元素遍历不到的问题
2016/04/13 Javascript
jQuery解决input元素的blur事件和其他非表单元素的click事件冲突问题
2016/08/15 Javascript
JS正则子匹配实例分析
2016/12/22 Javascript
vue的全局提示框组件实例代码
2018/02/26 Javascript
mpvue中配置vuex并持久化到本地Storage图文教程解析
2018/03/15 Javascript
React实现轮播效果
2020/08/25 Javascript
用python记录运行pid,并在需要时kill掉它们的实例
2017/01/16 Python
Python标准库笔记struct模块的使用
2018/02/22 Python
python和mysql交互操作实例详解【基于pymysql库】
2019/06/04 Python
Python hexstring-list-str之间的转换方法
2019/06/12 Python
Python基于机器学习方法实现的电影推荐系统实例详解
2019/06/25 Python
简单的Python调度器Schedule详解
2019/08/30 Python
python GUI库图形界面开发之PyQt5开发环境配置与基础使用
2020/02/25 Python
Pycharm添加虚拟解释器报错问题解决方案
2020/10/13 Python
python tqdm实现进度条的示例代码
2020/11/10 Python
python 将html转换为pdf的几种方法
2020/12/29 Python
跨域修改iframe页面内容详解
2019/10/31 HTML / CSS
Gap工厂店:Gap Factory
2017/11/02 全球购物
斯洛伐克电子产品购物网站:DATART
2020/04/05 全球购物
电子信息专业学生自荐信
2013/11/09 职场文书
大学生演讲稿
2014/04/25 职场文书
2014年最新大专生职业生涯规划书范文
2014/09/13 职场文书
公安纪律作风整顿剖析材料
2014/10/10 职场文书
2015年效能监察工作总结
2015/04/23 职场文书
golang http使用踩过的坑与填坑指南
2021/04/27 Golang
apache虚拟主机配置的三种方式(小结)
2022/07/23 Servers