JS自动倒计时30秒后按钮才可用(两种场景)


Posted in Javascript onAugust 31, 2015

展示效果图:

JS自动倒计时30秒后按钮才可用(两种场景)

WEB开发中经常会用到倒计时来限制用户对表单的操作,比如希望用户在一定时间内看完相关协议信息才允许用户继续下一步操作,又比如在收取手机验证码时允许用户在一定时间过后(未收到验证码的情况下)再次获取验证码。那么今天我来给大家介绍下如何使用Javascript来实现这一简单应用。

    查看演示 下载源码

应用场景1:用户注册时阅读完相关协议信息后才能激活按钮

某些网站注册时要求用户同意所谓的用户协议之类的信息,如果协议内容非常重要,有些网站会要求新注册的用户一定要阅读完相关协议信息才能激活下一步按钮提交表单。为了让用户能阅读完协议信息(实际用户有没有真正阅读咱不知道),开发者会设计一个倒计时比如30秒,30秒过后,表单提交按钮才会激活生效,下面来看具体如何实现。

<form action="https://3water.com/" method="post" name="agree"> 
 <input type="submit" class="button" value="请认真查看<服务条款和声明> ()" name="agreeb"> 
</form>

假设有上面这样一个表单,表单的其他部分我们省略,只有一个提交按钮,初始时按钮不可用,当显示30秒倒计时结束后,按钮就会显示“我同意”,并且可以点击激活。

我们用原生的js来实现这一效果:

<script> 
var secs = ; 
document.agree.agreeb.disabled=true; 
for(var i=;i<=secs;i++) { 
 window.setTimeout("update(" + i + ")", i * ); 
} 
function update(num) { 
 if(num == secs) { 
 document.agree.agreeb.value =" 我 同 意 "; 
 document.agree.agreeb.disabled=false; 
 } 
 else { 
 var printnr = secs-num; 
 document.agree.agreeb.value = "请认真查看<服务条款和声明> (" + printnr +")"; 
 } 
} 
</script>

我们设置时间为30秒,当然你也可以设置你想要的时间,将按钮禁用,也就是不可点击,然后循环30秒,通过window.setTimeout调用update()函数,将当前秒与倒计时对比,如果已经倒计时完成则显示“我同意”,并激活按钮。

应用场景2:用户激活短信通道向用户手机发送验证码短信以验明正身

很多网站在验证用户身份的时候需要提高用户信息的安全性,这样就会与用户手机绑定,于是就会向用户手机发送验证码信息,如果用户填写了正确的验证码提交后台,那么操作才会成功。而发送验证码也可能由于各种原因有发送不成功的情况,又不能让用户不停点击发送。如此开发者使用倒计时来处理这类问题,用户激活短信后,如果30秒后未收到验证码短信则可以再允许点击发送短信。

<form action="https://3water.com/" method="post" name="myform"> 
 <input type="button" class="button" value="获取手机验证码" name="phone" onclick="showtime()"> 
</form>

上面的表单在按钮上添加了一个onclick事件,调用了showtime()函数。

<script> 
function showtime(t){ 
 document.myform.phone.disabled=true; 
 for(i=;i<=t;i++) { 
 window.setTimeout("update_p(" + i + ","+t+")", i * ); 
 } 
 
} 
function update_p(num,t) { 
 if(num == t) { 
 document.myform.phone.value =" 重新发送 "; 
 document.myform.phone.disabled=false; 
 } 
 else { 
 printnr = t-num; 
 document.myform.phone.value = " (" + printnr +")秒后重新发送"; 
 } 
} 
</script>

和场景1一样,当点击按钮后,按钮状态为禁用,通过调用window.setTimeoutupdate_p()显示倒计时,当倒计时完成后,按钮显示“重新发送”,这时按钮状态为可用。

以上通过两种场景给大家展示了js实现自动倒计时30秒后按钮才可用,希望对大家有所帮助。

Javascript 相关文章推荐
JavaScript Base64编码和解码,实现URL参数传递。
Sep 18 Javascript
漂亮的widgets,支持换肤和后期开发新皮肤(2007-4-27已更新1.7alpha)
Apr 27 Javascript
javascript demo 基本技巧
Dec 18 Javascript
javascript管中窥豹 形参与实参浅析
Dec 17 Javascript
可在线编辑网页文字效果代码(单击)
Mar 02 Javascript
JS中改变this指向的方法(call和apply、bind)
Mar 26 Javascript
angularjs封装bootstrap时间插件datetimepicker
Jun 20 Javascript
javascript常用的设计模式
Feb 09 Javascript
Google 爬虫如何抓取 JavaScript 的内容
Apr 07 Javascript
帝国cms首页列表页实现点赞功能
Oct 30 Javascript
Postman的下载及安装教程详解
Oct 16 Javascript
Angular利用HTTP POST下载流文件的步骤记录
Jul 26 Javascript
js实现黑色简易的滑动门网页tab选项卡效果
Aug 31 #Javascript
jquery实现点击变换导航样式的方法
Aug 31 #Javascript
jQuery实现灰蓝风格标准二级下拉菜单效果代码
Aug 31 #Javascript
js实现TAB切换对应不同颜色的代码
Aug 31 #Javascript
Bootstrap的图片轮播示例代码
Aug 31 #Javascript
jQuery实现鼠标滑过点击事件音效试听
Aug 31 #Javascript
js实现仿百度风云榜可重复多次调用的TAB切换选项卡效果
Aug 31 #Javascript
You might like
IIS安装Apache伪静态插件的具体操作图文
2013/07/01 PHP
浅谈使用 PHP 进行手机 APP 开发(API 接口开发)
2014/08/11 PHP
EarthLiveSharp中cloudinary的CDN图片缓存自动清理python脚本
2017/04/04 PHP
js文件中调用js的实现方法小结
2009/10/23 Javascript
createElement与createDocumentFragment的点点区别小结
2011/12/19 Javascript
JavaScript/Js脚本处理html元素的自定义属性解析(亲测兼容Firefox与IE)
2013/11/25 Javascript
js闭包的用途详解
2014/11/09 Javascript
jQuery设置和移除文本框默认值的方法
2015/03/09 Javascript
jQuery实现图片文字淡入淡出效果
2015/12/21 Javascript
JavaScript表单验证实例之验证表单项是否为空
2016/01/10 Javascript
ionic隐藏tabs的方法
2016/08/29 Javascript
Vue.js实战之使用Vuex + axios发送请求详解
2017/04/04 Javascript
PHP实现记录代码运行时间封装类实例教程
2017/05/08 Javascript
jQuery使用ajax_动力节点Java学院整理
2017/07/05 jQuery
vue自定义过滤器创建和使用方法详解
2017/11/06 Javascript
VUEJS 2.0 子组件访问/调用父组件的实例
2018/02/10 Javascript
JS使用Dijkstra算法求解最短路径
2019/01/17 Javascript
jquery实现动态改变css样式的方法分析
2019/05/27 jQuery
Vue实现数据请求拦截
2019/10/23 Javascript
Element-UI+Vue模式使用总结
2020/01/02 Javascript
微信小程序实现底部弹出模态框
2020/11/18 Javascript
Python基于列表list实现的CRUD操作功能示例
2018/01/05 Python
Django跨域请求问题的解决方法示例
2018/06/16 Python
Python爬虫使用代理IP的实现
2019/10/27 Python
Tensorflow tf.dynamic_partition矩阵拆分示例(Python3)
2020/02/07 Python
Python pathlib模块使用方法及实例解析
2020/10/05 Python
CSS3地图动态实例代码(圆圈向外扩散)
2018/06/15 HTML / CSS
HTML5实现锚点时请使用id取代name
2013/09/06 HTML / CSS
工程管理造价应届生求职信
2013/11/13 职场文书
英文商务邀请信
2014/01/22 职场文书
捐款倡议书范文
2014/02/02 职场文书
幸福家庭事迹材料
2014/02/03 职场文书
经理岗位职责
2015/02/02 职场文书
大学生安全教育主题班会
2015/08/12 职场文书
2016年暑期见闻作文
2015/11/25 职场文书
2019年大学毕业生个人自我鉴定范文大全
2019/03/21 职场文书