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 相关文章推荐
父窗口获取弹出子窗口文本框的值
Jun 27 Javascript
Javascript 异步加载详解(浏览器在javascript的加载方式)
May 20 Javascript
jquery ajax例子返回值详解
Sep 11 Javascript
Js放到HTML文件中的哪个位置有什么区别
Aug 21 Javascript
JS小游戏之极速快跑源码详解
Sep 25 Javascript
javascript数组对象常用api函数小结(连接,插入,删除,反转,排序等)
Sep 20 Javascript
React Native自定义控件底部抽屉菜单的示例
Feb 08 Javascript
Vue页面骨架屏注入方法
May 13 Javascript
详解javascript函数写法大全
Mar 25 Javascript
微信小程序中显示倒计时代码实例
May 09 Javascript
vue引入静态js文件的方法
Jun 20 Javascript
纯JS开发baguetteBox.js响应式画廊插件
Jun 28 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
合作指挥官:孟斯克
2020/03/16 星际争霸
判断php数组是否为索引数组的实现方法
2013/06/13 PHP
JS数字抽奖游戏实现方法
2015/05/04 Javascript
深入理解Angular2 模板语法
2016/08/07 Javascript
详细总结Javascript中的焦点管理
2016/09/17 Javascript
js 实现一些跨浏览器的事件方法详解及实例
2016/10/27 Javascript
ES6中Proxy与Reflect实现重载(overload)的方法
2017/03/30 Javascript
关于Angular2 + node接口调试的解决方案
2017/05/28 Javascript
Bootstrap弹出框之自定义悬停框标题、内容和样式示例代码
2017/07/11 Javascript
详解webpack2+React 实例demo
2017/09/11 Javascript
Vue.JS实现垂直方向展开、收缩不定高度模块的JS组件
2018/06/19 Javascript
vue使用ajax获取后台数据进行显示的示例
2018/08/09 Javascript
微信公众号H5支付接口调用方法
2019/01/10 Javascript
简单学习5种处理Vue.js异常的方法
2019/06/17 Javascript
关于vue表单提交防双/多击的例子
2019/10/31 Javascript
利用webpack理解CommonJS和ES Modules的差异区别
2020/06/16 Javascript
vue实现把接口单独存放在一个文件方式
2020/08/13 Javascript
基于JavaScript实现简单抽奖功能代码实例
2020/10/20 Javascript
Python装饰器使用示例及实际应用例子
2015/03/06 Python
用Python写一段用户登录的程序代码
2018/04/22 Python
python遍历一个目录,输出所有的文件名的实例
2018/04/23 Python
celery4+django2定时任务的实现代码
2018/12/23 Python
Jacobi迭代算法的Python实现详解
2019/06/29 Python
python实现桌面托盘气泡提示
2019/07/29 Python
Python Des加密解密如何实现软件注册码机器码
2020/01/08 Python
台湾家适得:Homeget
2019/02/11 全球购物
俄罗斯药房连锁店:ASNA
2020/06/20 全球购物
什么是数据抽象
2016/11/26 面试题
应用化学专业职业生涯规划书
2014/01/22 职场文书
致裁判员加油稿
2014/02/08 职场文书
政府信息公开实施方案
2014/05/09 职场文书
自主招生教师推荐信
2014/05/10 职场文书
世界卫生日宣传活动总结
2015/02/09 职场文书
2015年乡镇卫生院妇幼保健工作总结
2015/05/19 职场文书
2015年小学体育教师工作总结
2015/10/23 职场文书
Nginx中break与last的区别详析
2021/03/31 Servers