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 相关文章推荐
textContent在Firefox下与innerText等效的属性
May 12 Javascript
js 模拟实现类似c#下的hashtable的简单功能代码
Jan 24 Javascript
禁用键盘上的(全局)指定键兼容iE、Chrome、火狐
May 14 Javascript
2014 年最热门的21款JavaScript框架推荐
Dec 25 Javascript
JS打开新窗口防止被浏览器阻止的方法
Jan 03 Javascript
实例讲解jquery与json的结合
Jan 07 Javascript
微信小程序 开发指南详解
Sep 27 Javascript
Canvas 制作动态进度加载水球详解及实例代码
Dec 09 Javascript
vue.js实现请求数据的方法示例
Feb 07 Javascript
JavaScript实现AOP详解(面向切面编程,装饰者模式)
Dec 19 Javascript
vue-router 中 meta的用法详解
Nov 01 Javascript
React 实现车牌键盘的示例代码
Dec 20 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
phpmyadmin 常用选项设置详解版
2010/03/07 PHP
PHP安全防范技巧分享
2011/11/03 PHP
php获取当前月与上个月月初及月末时间戳的方法
2016/12/05 PHP
PHP使用反向Ajax技术实现在线客服系统详解
2019/07/01 PHP
javascript动态改变img的src属性图片不显示的解决方法
2010/10/20 Javascript
基于JavaScript实现继承机制之调用call()与apply()的方法详解
2013/05/07 Javascript
Jquery绑定事件(bind和live的区别介绍)
2013/08/23 Javascript
JavaScript更改原始对象valueOf的方法
2015/03/19 Javascript
Javascript实现颜色rgb与16进制转换的方法
2015/04/18 Javascript
JavaScript模拟可展开、拖动与关闭的聊天窗口实例
2015/05/12 Javascript
基于jQuery下拉选择框插件支持单选多选功能代码
2016/06/07 Javascript
jQuery获取多种input值的简单实现方法
2016/06/20 Javascript
js实现浏览器倒计时跳转页面效果
2016/08/12 Javascript
js控制文本框只能输入中文、英文、数字与指定特殊符号的实现代码
2016/09/09 Javascript
详解vue axios二次封装
2018/07/22 Javascript
layui获取多选框中的值方法
2018/08/15 Javascript
vue上传图片到oss的方法示例(图片带有删除功能)
2018/09/27 Javascript
vue学习笔记五:在vue项目里面使用引入公共方法详解
2019/04/04 Javascript
layui实现鼠标移动到单元格上显示数据的方法
2019/09/11 Javascript
react用Redux中央仓库实现一个todolist
2019/09/29 Javascript
javascript实现移动端上传图片功能
2020/08/18 Javascript
[07:49]2014DOTA2国际邀请赛 Newbee夺冠后采访xiao8坦言奖金会上交
2014/07/23 DOTA
打包发布Python模块的方法详解
2016/09/18 Python
利用Python生成文件md5校验值函数的方法
2017/01/10 Python
Python学习笔记之图片人脸检测识别实例教程
2019/03/06 Python
细数nn.BCELoss与nn.CrossEntropyLoss的区别
2020/02/29 Python
基于HTML5 FileSystem API的使用介绍
2013/04/24 HTML / CSS
美国智能家居专家:tink
2019/06/04 全球购物
优秀演讲稿范文
2013/12/29 职场文书
会议邀请函范文
2014/01/09 职场文书
妇女干部培训方案
2014/05/12 职场文书
2015圣诞节贺卡寄语
2015/03/24 职场文书
工程合作意向书范本
2015/05/09 职场文书
2015年科研工作总结范文
2015/05/13 职场文书
2016年教育局“我们的节日——端午节”主题活动总结
2016/04/01 职场文书
Python matplotlib安装以及实现简单曲线的绘制
2022/04/26 Python