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处理VBArray的函数使用说明
May 11 Javascript
javascript 自动转到命名锚记
Jan 10 Javascript
基于jQuery的弹出警告对话框美化插件(警告,确认和提示)
Jun 10 Javascript
js防止表单重复提交实现代码
Sep 05 Javascript
18个非常棒的jQuery代码片段
Nov 02 Javascript
JCrop+ajaxUpload 图像切割上传的实例代码
Jul 20 Javascript
JS函数多个参数默认值指定方法分析
Nov 28 Javascript
JS之if语句对接事件动作逻辑(详解)
Jun 28 Javascript
jQuery常见面试题之DOM操作详析
Jul 05 jQuery
集成vue到jquery/bootstrap项目的方法
Feb 10 jQuery
关于element-ui表单中限制输入纯数字的解决方式
Sep 08 Javascript
vue element ui validate 主动触发错误提示操作
Sep 21 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 array_merge函数使用需要注意的一个问题
2015/03/30 PHP
php+MySql实现登录系统与输出浏览者信息功能
2016/07/01 PHP
PHP编程获取各个时间段具体时间的方法
2017/05/26 PHP
jQuery Ajax 全解析
2009/02/08 Javascript
jQuery chili图片远处放大插件
2009/11/30 Javascript
JSON+JavaScript处理JSON的简单例子
2013/03/20 Javascript
JS在TextArea光标位置插入文字并实现移动光标到文字末尾
2013/06/21 Javascript
jquery删除指定的html标签并保留标签内文本内容的方法
2014/04/02 Javascript
现代 JavaScript 开发编程风格Idiomatic.js指南中文版
2014/05/28 Javascript
深入理解JavaScript函数参数(推荐)
2016/07/26 Javascript
JavaScript学习小结之被嫌弃的eval函数和with语句实例详解
2016/08/01 Javascript
基于JavaScript实现类名的添加与移除
2017/04/23 Javascript
前端跨域的几种解决方式总结(推荐)
2017/08/16 Javascript
vue中eslintrc.js配置最详细介绍
2018/12/21 Javascript
js核心基础之闭包的应用实例分析
2019/05/11 Javascript
JQuery animate动画应用示例
2019/05/14 jQuery
微信小程序图表插件wx-charts用法实例详解
2019/05/20 Javascript
JS使用new操作符创建对象的方法分析
2019/05/30 Javascript
vue使用自定义指令实现拖拽
2021/01/29 Javascript
Vue实现验证码功能
2019/12/03 Javascript
JavaScript实现PC端四格密码输入框功能
2020/02/19 Javascript
原生JavaScript实现弹幕组件的示例代码
2020/10/12 Javascript
python避免死锁方法实例分析
2015/06/04 Python
python 实时遍历日志文件
2016/04/12 Python
python如何实现int函数的方法示例
2018/02/19 Python
python-docx修改已存在的Word文档的表格的字体格式方法
2018/05/08 Python
python-tkinter之按钮的使用,开关方法
2019/06/11 Python
Python 连接 MySQL 的几种方法
2020/09/09 Python
next在python中返回迭代器的实例方法
2020/12/15 Python
印尼值得信赖的在线交易网站:Bukalapak
2019/03/11 全球购物
经销商会议欢迎词
2014/01/11 职场文书
大学校庆邀请函
2014/01/11 职场文书
三国演义读书笔记
2015/06/25 职场文书
2015大学生暑假调查报告
2015/07/13 职场文书
MySQL 数据类型选择原则
2021/05/27 MySQL
Python采集爬取京东商品信息和评论并存入MySQL
2022/04/12 Python