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 相关文章推荐
js 对联广告、漂浮广告封装类(IE,FF,Opera,Safari,Chrome
Nov 26 Javascript
javascript深入理解js闭包
Jul 03 Javascript
js格式化时间和js格式化时间戳示例
Feb 10 Javascript
Jquery仿IGoogle实现可拖动窗口示例代码
Aug 22 Javascript
原生js模拟淘宝购物车项目实战
Nov 18 Javascript
Javascript实现图片轮播效果(一)让图片跳动起来
Feb 17 Javascript
JavaScript模块化之使用requireJS按需加载
Apr 12 Javascript
详解AngularJs路由之Ui-router-resolve(预加载)
Jun 13 Javascript
详解AngularJS1.x学习directive 中‘&amp; ’‘=’ ‘@’符号的区别使用
Aug 23 Javascript
jQuery Collapse1.1.0折叠插件简单使用
Aug 28 jQuery
如何实现小程序tab栏下划线动画效果
May 18 Javascript
vue弹出框组件封装实例代码
Oct 31 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
PHP 模板高级篇总结
2006/12/21 PHP
AMFPHP php远程调用(RPC, Remote Procedure Call)工具 快速入门教程
2010/05/10 PHP
基于empty函数的输出详解
2013/06/17 PHP
php插入排序法实现数组排序实例
2015/02/16 PHP
php+ajax实现无刷新分页
2015/11/18 PHP
thinkphp命名空间用法实例详解
2015/12/30 PHP
实现PHP搜索加分页
2016/10/12 PHP
CI框架常用经典操作类总结(路由,伪静态,分页,session,验证码等)
2016/11/21 PHP
php判断str字符串是否是xml格式数据的方法示例
2017/07/26 PHP
PHP之多条件混合筛选功能的实现方法
2019/10/09 PHP
用javascript动态调整iframe高度的代码
2007/04/10 Javascript
TimergliderJS 一个基于jQuery的时间轴插件
2011/12/07 Javascript
使用js画图之正弦曲线
2015/01/12 Javascript
微信小程序 框架详解及实例应用
2016/09/26 Javascript
js浏览器html5表单验证
2016/10/17 Javascript
微信小程序 input输入框详解及简单实例
2017/01/10 Javascript
微信小程序tabbar不显示解决办法
2017/06/08 Javascript
JS+HTML5实现图片在线预览功能
2017/07/22 Javascript
给vue项目添加ESLint的详细步骤
2017/09/29 Javascript
Vue 解决父组件跳转子路由后当前导航active样式消失问题
2020/07/21 Javascript
[06:14]《辉夜杯》外卡赛附加赛 4支战队巡礼
2015/10/23 DOTA
[51:17]VGJ.T vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
[01:02:07]Liquid vs Newbee 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
通过mod_python配置运行在Apache上的Django框架
2015/07/22 Python
Python发送http请求解析返回json的实例
2018/03/26 Python
在PyCharm中三步完成PyPy解释器的配置的方法
2018/10/29 Python
Python为何不能用可变对象作为默认参数的值
2019/07/01 Python
python PIL模块的基本使用
2020/09/29 Python
python Tornado框架的使用示例
2020/10/19 Python
英国时尚服饰电商:Boohoo
2017/10/12 全球购物
英国在线药房和在线药剂师:Chemist 4 U
2020/01/05 全球购物
师范院校学生自荐信范文
2013/12/27 职场文书
写给女生的道歉信
2014/01/14 职场文书
鸟的天堂导游词
2015/01/31 职场文书
同乡会致辞
2015/07/30 职场文书
Windows Server 2019 配置远程控制以及管理方法
2022/04/28 Servers