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 相关文章推荐
jquery ajax同步异步的执行最终解决方案
Apr 26 Javascript
jQuery中dom元素上绑定的事件详解
Apr 24 Javascript
js实现带缓冲效果的仿QQ面板折叠菜单代码
Sep 06 Javascript
JS实现的点击表头排序功能示例
Mar 27 Javascript
垃圾回收器的相关知识点总结
May 13 Javascript
ios设备中angularjs无法改变页面title的解决方法
Sep 13 Javascript
JQuery搜索框自动补全(模糊匹配)功能实现示例
Jan 08 jQuery
js实现延迟加载的几种方法详解
Jan 19 Javascript
JavaScript函数式编程(Functional Programming)声明式与命令式实例分析
May 21 Javascript
vue学习之Vue-Router用法实例分析
Jan 06 Javascript
vue+element使用动态加载路由方式实现三级菜单页面显示的操作
Aug 04 Javascript
jQuery+ajax实现用户登录验证
Sep 13 jQuery
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
PHP简介
2006/10/09 PHP
PHP通过COM使用ADODB的简单例子
2006/12/31 PHP
基于php权限分配的实现代码
2013/04/28 PHP
基于php-fpm的配置详解
2013/06/03 PHP
windows8.1下Apache+Php+MySQL配置步骤
2015/10/30 PHP
一个原生的用户等级的进度条
2010/07/03 Javascript
关于使用 jBox 对话框的提交不能弹出问题解决方法
2012/11/07 Javascript
jQuery中读取json文件示例代码
2013/05/10 Javascript
js捕获鼠标滚轮事件代码
2013/12/16 Javascript
HTML5+Canvas调用手机拍照功能实现图片上传(上)
2017/04/21 Javascript
Node.js五大应用性能技巧小结(必须收藏)
2017/08/09 Javascript
vue.js使用v-model实现表单元素(input) 双向数据绑定功能示例
2019/03/08 Javascript
[46:03]LGD vs VGJ.T 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
[52:40]完美世界DOTA2联赛PWL S2 Magma vs GXR 第一场 11.29
2020/12/02 DOTA
Python使用正则表达式抓取网页图片的方法示例
2017/04/21 Python
Python3实现抓取javascript动态生成的html网页功能示例
2017/08/22 Python
对python中的iter()函数与next()函数详解
2018/10/18 Python
Python判断一个文件夹内哪些文件是图片的实例
2018/12/07 Python
如何用C代码给Python写扩展库(Cython)
2019/05/17 Python
python 直接赋值和copy的区别详解
2019/08/07 Python
详解Python 字符串相似性的几种度量方法
2019/08/29 Python
Window系统下Python如何安装OpenCV库
2020/03/05 Python
在TensorFlow中实现矩阵维度扩展
2020/05/22 Python
详解Python中string模块除去Str还剩下什么
2020/11/30 Python
Python实现Excel自动分组合并单元格
2021/02/22 Python
html5中localStorage本地存储的简单使用
2017/06/16 HTML / CSS
北承题目(C++)
2012/05/16 面试题
高校教师思想汇报
2014/01/11 职场文书
债务追讨授权委托书范本
2014/10/16 职场文书
2014年局领导班子自身建设情况汇报
2014/11/21 职场文书
公司放假通知怎么写
2015/04/15 职场文书
青年联谊会致辞
2015/07/31 职场文书
nginx实现发布静态资源的方法
2021/03/31 Servers
Python读取和写入Excel数据
2022/04/20 Python
Go调用Rust方法及外部函数接口前置
2022/06/14 Golang
Spring Security动态权限的实现方法详解
2022/06/16 Java/Android