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

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

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

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

前端样式布局代码

<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实现验证码倒计时、javascript实现验证码、javascript倒计时代码、javascript 倒计时,以便于您获取更多的相关知识。

时间: 2024-10-27 15:01:48

WEB开发之注册页面验证码倒计时代码的实现_javascript技巧的相关文章

javascript 异步页面查询实现代码(asp.net)_javascript技巧

1. testlist.aspx页面: 复制代码 代码如下: <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> <link rel="stylesheet" href="jscript/autoSuggest.css" type="text/css&q

结构-web开发--关于从页面导出dbf格式文件

问题描述 web开发--关于从页面导出dbf格式文件 从页面导出dbf文件字段之间的距离很大,不知道如何控制,求救....如图:![图片说明](http://img.ask.csdn.net/upload/201603/21/1458550761_92501.png) //代码如下 public static void writeDBF(String path, Object[][] data, String[] headColmuns) throws DBFException, FileNot

ajax-.net web开发中一个页面如何做到同一时间只能被一个用户访问?

问题描述 .net web开发中一个页面如何做到同一时间只能被一个用户访问? 例如一个案件列表页,用户A点击列表页某个案件记录的查看详情链接时,打开详情页,这时其他电脑上的用户不能再打开A操作的这条记录进行查看详情.数据库加状态字段的方案不可取,网页非正常关闭时不好判断.看网上说有ajax轮询 dwr推技术能解决,不知道具体实现如何,请教有做过的大侠贴下代码,再次感谢..困扰已久的问题期待完美解决方法.(同求java解决方案).个人感觉这个问题是个常规问题,但是晚上解决办法很少呢.困惑... 解

jsp 网站开发-jsp登录页面的使用代码

问题描述 jsp登录页面的使用代码 我是一个jsp学习的新人,希望大神们发给我一段登录页面访问数据库的代码,谢谢 解决方案 http://blog.csdn.net/xuxiu_1972/article/details/8267087 解决方案二: 使用struts框架的简单jsp登录页面 解决方案三: 你从网上随便搜一个代码,都基本必带这个功能

ASP.NET笔记之Session、http、web开发原则、xss漏洞的详细介绍_实用技巧

1.Session 2.验证码 YZM.ashx 复制代码 代码如下: <%@ WebHandler Language="C#" Class="YZM" %> using System;using System.Web; public class YZM : IHttpHandler, System.Web.SessionState.IRequiresSessionState{     public void ProcessRequest (HttpCo

对Web开发人员有用的8个网站小结_相关技巧

1. Min.us: 上传图片的最简单方 开发人员有用的8个网站小结_相关技巧-web前端开发培训小结"> 任何开发人员.设计师.网络管理员都必须跟客户和同事在线分享图片.Min.us的全部服务就是让你极度简单地上传图片:只需把图片拖拽到Min.us的网页里,图片就会保存在服务器上.并且自动生成短网址,这样你就可以通过这个网站分享图片了. 访问Min.us 2.Wirify:把任何网页转换成线框图 设计网站时线框图非常有用.Wirify是一个可以把任何网页立刻转换成线框图的书签工具,这样你

ASP.NET实现个人信息注册页面并跳转显示_实用技巧

题目 新建一个MVC项目,利用HTML.CSS.JS.jQuery.Ajax.jQuery UI等技术设计一个个人信息注册页面.当点击"提交"按钮时,跳转到新的页面显示录入信息. 基本要求: 用户名为6-10个小写字母(小写使用正则式验证,且用户名不能为"wustzz" –用Ajax技术来检测):密码为6位数字,确认密码不一致时有提示:籍贯使用级联(jquery实现):Email必须符合Email格式:手机是11位(假设规定以1569开头):出生年月使用jQuery

PHP连接数据库实现注册页面的增删改查操作_php技巧

本文实例为大家分享了PHP连接数据库实现注册页面的增删改查操作的方法,供大家参考,具体内容如下 1.连接数据库 <?php //本地测试 $host = '127.0.0.1'; $port = 3306; $user = "root"; $pwd = ""; $link = @mysql_connect("{$host}:{$port}",$user,$pwd,true); if(!$link) { die("Connect S

JS基于递归实现倒计时效果的方法_javascript技巧

本文实例讲述了JS基于递归实现倒计时效果的方法.分享给大家供大家参考,具体如下: 效果: 事件: //发送验证码 $('.js-sms-code').click(function(){ $(this).attr("disabled", "disabled").html("<span style='color:#666'><span id='countdown'>60</span>s 后再试</span>&qu