jQuery实现倒计时重新发送短信验证码功能示例


Posted in Javascript onJanuary 12, 2017

本文实例讲述了jQuery实现倒计时重新发送短信验证码功能的方法。分享给大家供大家参考,具体如下:

<!DOCTYPE html>
<html>
<head>
<script src="http://libs.baidu.com/jquery/1.10.2/jquery.min.js"></script>
<script type="text/javascript">
var countdown=60;
function settime(obj) {
  if (countdown == 0) {
    obj.removeAttribute("disabled");
    obj.value="免费获取验证码";
    countdown = 60;
    return;
  } else {
    obj.setAttribute("disabled", true);
    obj.value="重新发送(" + countdown + ")";
    countdown--;
  }
setTimeout(function() {
  settime(obj) }
  ,1000)
}
</script>
<body>
<input type="button" id="btn" value="免费获取验证码" onclick="settime(this)" />
</body>
</html>

实践例子:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>抢占iPhone7专属预订名额</title>
    <link rel="stylesheet" href="getiphone.css" />
  </head>
  <body style="width: 100%;height: 100%;background:#fff url(iponeImg/beijing.png) no-repeat center fixed;background-size:100% 100%;text-align: center;">
    <div class="top">
      <img src="iponeImg/wenan.png" />
    </div>
    <h1 class="title"><span></span>上市时间同步发售<span></span><br />首批新苹果30个预订专属名额</h1>
    <form id="activityForm" class="form-horizontal" method="post" action="/wamei/activityController/save.htm">
      <label>
        <span><img src="iponeImg/yonghu.png" /></span>
        <i></i>
        <input type="text" class="inline-input" id="name" name="name" placeholder="请输入您的真实姓名" datatype="*1-20" errormsg="姓名最多20个中英文字符!" nullmsg="请输入您的真实姓名!" />
      </label>
      <label>
        <span><img src="iponeImg/dianhua.png" /></span>
        <i></i>
        <input type="text" class="inline-input" id="mobilePhone" name="mobilePhone" placeholder="请输入您的手机号码" datatype="*" errormsg="请输入您的手机号码!" nullmsg="请输入您的手机号码!" />
      </label>
      <label>
        <span><img src="iponeImg/yanzhengma.png" /></span>
        <i></i>
        <input type="text" id="validateCode" class="inline-input" name="validateCode" placeholder="验证码" datatype="*" errormsg="请输入验证码!" nullmsg="请输入验证码!" style="width:180px;" />
        <a id="num" mark="1" >获取验证码</a>
      </label>
      <label id="get">
        <input id="confirm" type="submit" value="提交抢占名额" />
      </label>
      <label>
        <a href="/wamei/pages/activity/details.html" id="activity">查看活动详情</a>
      </label>
    </form>
    <div class="bottom">
      <span></span>
      <img src="iponeImg/logo.png" />
      <span></span>
    </div>
    <div id="success">
      <div class="successImg">
        <a class="close"></a>
        <p><img src="iponeImg/chenggong.png" />恭喜提交成功</p>
        <p style="padding-top: 0px;font-size: 23px;">分享一下,安抚激动的心</p>
      </div>
    </div>
  </body>
</html>
<!-- scripts -->
<script src="/wamei/pages/js/jquery.min.js"></script>
<script src="/wamei/pages/js/jquery.form.js"></script>
<script src="/wamei/pages/js/bootstrap.min.js"></script>
<script src="/wamei/pages/js/Validform_v5.3.2.js"></script>
<script type="text/javascript">
  $(function(){
    //提交表单
    $("#activityForm").Validform({
      btnSubmit:"#confirm",
      tiptype:function(msg){
        if(msg != '' && msg!='通过信息验证!'){
          alert(msg);
        }
      },
      tipSweep:true,
      beforeSubmit:function(){
        saveForm();
        return false;
      }
    });
  });
  //只允许在APP内打开
  function isMobile(){
    var u = navigator.userAgent;
    var mobileFlag = u.indexOf('type/tfbrowser') > -1;
    return mobileFlag;
  }
  //手机号码验证
  $("#mobilePhone").blur(function(){
    var mobilePhone =$("#mobilePhone").val();
    var myreg = /^(((13[0-9]{1})|(14[0-9]{1})|(17[0]{1})|(15[0-3]{1})|(15[5-9]{1})|(18[0-9]{1}))+\d{8})$/;
    if(mobilePhone){
      if(!myreg.test(mobilePhone)){
        alert("请输入有效的手机号码!");
        $("#mobilePhone").val("");
        return ;
      }
    }
  });
  //发送短信验证码
  $("#num").click(function(){
    var mobilePhone =$("#mobilePhone").val();
    var url="/wamei/activityController/sendValidCode.htm";
    if(!mobilePhone){
      alert("请输入您的手机号码!");
      return ;
    }
    var mark = $("#num").attr("mark");
    if("1"==mark){
      settime(this);
      $.post(url,{mobilePhone:mobilePhone},function(html){
        var data = eval("("+html+")");
        if(data && data.statusCode==1){
          console.log("send success!");
          alert("短信验证码已发送,请查收!");
        }else{
          alert(data.msg);
        }
      });
    }
  });
  //提交form表单
  function saveForm(){
    $("#activityForm").ajaxSubmit({
      //data: {'columnStr':columnStr},
      type: 'post',
      async: false,
      success: function($data) {
        var data = eval("("+$data+")");
        if(data && data.statusCode==1){
          $("#success").show();
        }else{
          alert(data.msg);
          $("#mobilePhone").val("");
        }
      }
    });
  }
  $(".close").click(function(){
    $("#success").hide();
    window.location.reload();
  })
  //短信后倒计时
  var countdown=60;
  function settime(obj) {
    if (countdown == 0) {
      $(obj).attr("disabled",false);
      $(obj).attr("mark","1");
      $(obj).html("获取验证码");
      countdown = 60;
      return;
    } else {
      $(obj).attr("disabled", true);
      $(obj).attr("mark","0");
      $(obj).html("重新发送(" + countdown + ")");
      countdown--;
    }
    setTimeout(function() {
          settime(obj) }
        ,1000)
  }
// $("#confirm").click(function(){
//   $("#success").show();
// })
</script>
Javascript 相关文章推荐
javascript实现当前页导航激活的方法
Feb 27 Javascript
论JavaScript模块化编程
Mar 07 Javascript
jQuery UI结合Ajax创建可定制的Web界面
Jun 22 Javascript
jQuery实现查找最近父节点的方法
Jun 23 Javascript
JS获取url参数、主域名的方法实例分析
Aug 03 Javascript
DropDownList控件绑定数据源的三种方法
Dec 24 Javascript
详解js前端代码异常监控
Jan 11 Javascript
JS实现多级菜单中当前菜单不随页面跳转样式而发生变化
May 30 Javascript
Vue的路由动态重定向和导航守卫实例
Mar 17 Javascript
关于layui 下拉列表的change事件详解
Sep 20 Javascript
原生JavaScript之es6中Class的用法分析
Feb 23 Javascript
Vue使用Three.js加载glTF模型的方法详解
Jun 14 Javascript
js仿京东轮播效果 选项卡套选项卡使用
Jan 12 #Javascript
JS实现京东首页之页面顶部、Logo和搜索框功能
Jan 12 #Javascript
JS百度地图搜索悬浮窗功能
Jan 12 #Javascript
原生js实现焦点轮播图效果
Jan 12 #Javascript
详解能在多种前端框架下使用的表格控件
Jan 11 #Javascript
vuejs父子组件通信的问题
Jan 11 #Javascript
bootstrap 表单验证使用方法
Jan 11 #Javascript
You might like
PHP If Else(elsefi) 语句
2013/04/07 PHP
教你如何在CI框架中使用 .htaccess 隐藏url中index.php
2014/06/09 PHP
在win7中搭建Linux+PHP 开发环境
2014/10/08 PHP
PHP中的session安全吗?
2016/01/22 PHP
Yii2组件之多图上传插件FileInput的详细使用教程
2016/06/20 PHP
PHP常用日期加减计算方法实例小结
2018/07/31 PHP
用javascript实现的图片马赛克后显示并切换加文字功能
2007/04/21 Javascript
js打印纸函数代码(递归)
2010/06/18 Javascript
jQuery学习笔记之DOM对象和jQuery对象
2010/12/22 Javascript
jQuery-ui引入后Vs2008的无智能提示问题解决方法
2014/02/10 Javascript
简介JavaScript中的setHours()方法的使用
2015/06/11 Javascript
使用递归遍历对象获得value值的实现方法
2016/06/14 Javascript
jQuery表单插件ajaxForm实例详解
2017/01/17 Javascript
详解javascript中对数据格式化的思考
2017/01/23 Javascript
javascript图片预览和上传(兼容IE)
2017/03/15 Javascript
JavaScript实现的浏览器下载文件的方法
2017/08/09 Javascript
vue项目打包上传github并制作预览链接(pages)
2019/04/19 Javascript
Vue路由管理器Vue-router的使用方法详解
2020/02/05 Javascript
vue项目打包后请求地址错误/打包后跨域操作
2020/11/04 Javascript
理解Python中的With语句
2015/02/02 Python
pandas.DataFrame 根据条件新建列并赋值的方法
2018/04/08 Python
django将图片上传数据库后在前端显式的方法
2018/05/25 Python
python中将正则过滤的内容输出写入到文件中的实例
2018/10/21 Python
Python SMTP发送邮件遇到的一些问题及解决办法
2018/10/24 Python
python手写均值滤波
2020/02/19 Python
Python键鼠操作自动化库PyAutoGUI简介(小结)
2020/05/17 Python
Django Auth用户认证组件实现代码
2020/10/13 Python
美国电视购物:QVC
2017/02/06 全球购物
应届毕业生个人自我评价
2013/09/20 职场文书
我的动漫时代的创业计划书范文
2014/01/27 职场文书
公司会计岗位职责
2014/02/13 职场文书
生态养殖创业计划书
2014/05/06 职场文书
元宵节晚会主持词
2015/07/01 职场文书
高三教师工作总结2015
2015/07/21 职场文书
python实现股票历史数据可视化分析案例
2021/06/10 Python
mybatis 获取无数据的字段不显示的问题
2021/07/15 Java/Android