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 timers计时器简单应用说明
Oct 28 Javascript
JQuery制作的放大效果的popup对话框(未添加任何jquery plugin)分享
Apr 28 Javascript
jquery 日期控件datepicker属性详细解析
Nov 08 Javascript
jquerymobile局部渲染的各种刷新方法小结
Mar 05 Javascript
jquery简单实现幻灯片的方法
Aug 03 Javascript
深入理解JS addLoadEvent函数
May 20 Javascript
DOM操作原生js 的bug,使用jQuery 可以消除的解决方法
Sep 04 Javascript
AngularJS入门教程之Helloworld示例
Dec 25 Javascript
js eval函数使用,js对象和字符串互转实例
Mar 06 Javascript
Vue Transition实现类原生组件跳转过渡动画的示例
Aug 19 Javascript
纯js代码生成可搜索选择下拉列表的实例
Jan 11 Javascript
layui form表单提交后实现自动刷新
Oct 25 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开发中的中文编码问题
2013/08/08 PHP
php基于Fleaphp框架实现cvs数据导入MySQL的方法
2016/02/23 PHP
PHP获取文本框、密码域、按钮的值实例代码
2017/04/19 PHP
PHP开发之归档格式phar文件概念与用法详解【创建,使用,解包还原提取】
2017/11/17 PHP
HTML中事件触发列表与解说
2007/07/09 Javascript
jQuery Dialog 弹出层对话框插件
2010/08/09 Javascript
jquery.cvtooltip.js 基于jquery的气泡提示插件
2010/11/19 Javascript
在百度知道团队中快速审批新成员的js脚本
2014/02/02 Javascript
JQuery对表单元素的基本操作使用总结
2014/07/18 Javascript
JS实现的数组全排列输出算法
2015/03/19 Javascript
js 自带的sort() 方法全面了解
2016/08/16 Javascript
原生js仿jquery实现对Ajax的封装
2016/10/04 Javascript
JS多物体实现缓冲运动效果示例
2016/12/20 Javascript
LayUI switch 开关监听 获取属性值、更改状态的方法
2019/09/21 Javascript
js 获取本周、上周、本月、上月、本季度、上季度的开始结束日期
2020/02/01 Javascript
js+h5 canvas实现图片验证码
2020/10/11 Javascript
微信小程序实现点击导航标签滚动定位到对应位置
2020/11/19 Javascript
[48:37]EG vs OG 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
[01:14:31]Secret vs VG 2018国际邀请赛淘汰赛BO3 第一场 8.23
2018/08/24 DOTA
举例讲解Python程序与系统shell交互的方式
2015/04/09 Python
浅谈python中scipy.misc.logsumexp函数的运用场景
2016/06/23 Python
python print 按逗号或空格分隔的方法
2018/05/02 Python
django 简单实现登录验证给你
2019/11/06 Python
Python全面分析系统的时域特性和频率域特性
2020/02/26 Python
Python中SQLite如何使用
2020/05/27 Python
python中delattr删除对象方法的代码分析
2020/12/15 Python
H&M美国官网:欧洲最大的服饰零售商
2016/09/07 全球购物
Black Halo官方网站:购买连衣裙、礼服和连体裤
2018/06/13 全球购物
古汉语文学求职信范文
2014/03/16 职场文书
品德评语大全
2014/05/05 职场文书
冰峪沟导游词
2015/02/09 职场文书
校车安全管理责任书
2015/05/11 职场文书
房屋买卖定金协议书
2016/03/21 职场文书
vue-cropper组件实现图片切割上传
2021/05/27 Vue.js
SQL使用复合索引实现数据库查询的优化
2022/05/25 SQL Server
HTML实现仿Windows桌面主题特效的实现
2022/06/28 HTML / CSS