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的属性选择符和自定义选择符使用方法(二)
Apr 07 Javascript
jquery text(),val(),html()方法区别总结
Nov 04 Javascript
深入理解javascript中return的作用
Dec 30 Javascript
jQuery使用hide方法隐藏元素自身用法实例
Mar 30 Javascript
JavaScript实现在页面间传值的方法
Apr 07 Javascript
Bootstrap导航栏各元素操作方法(表单、按钮、文本)
Dec 28 Javascript
Vue.js 表单校验插件
Aug 14 Javascript
canvas绘制表盘时钟
Jan 23 Javascript
在Vue组件化中利用axios处理ajax请求的使用方法
Aug 25 Javascript
详解如何构建Promise队列实现异步函数顺序执行
Oct 23 Javascript
Websocket 向指定用户发消息的方法
Jan 09 Javascript
JavaScript实现横版菜单栏
Mar 17 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根据IP判断地区名信息的示例代码
2014/03/03 PHP
PHP基于PDO调用sqlserver存储过程通用方法【基于Yii框架】
2017/10/07 PHP
javascript 的Document属性和方法集合
2010/01/25 Javascript
Javascript中获取出错代码所在文件及行数的代码
2010/09/23 Javascript
javascript 学习笔记(八)javascript对象
2011/04/12 Javascript
javascript实现yield的方法
2013/11/06 Javascript
学习JavaScript设计模式之代理模式
2016/01/12 Javascript
javascript对象的创建和访问
2016/03/08 Javascript
JavaScript Ajax编程 应用篇
2016/07/02 Javascript
微信小程序 图片等比例缩放(图片自适应屏幕)
2016/11/16 Javascript
AngularJS 最常用的八种功能(基础知识)
2017/06/26 Javascript
10 种最常见的 Javascript 错误(频率最高)
2018/02/08 Javascript
vue使用$emit时,父组件无法监听到子组件的事件实例
2018/02/26 Javascript
改变vue请求过来的数据中的某一项值的方法(详解)
2018/03/08 Javascript
JavaScript使用prototype原型实现的封装继承多态示例
2018/08/31 Javascript
node链接mongodb数据库的方法详解【阿里云服务器环境ubuntu】
2019/03/07 Javascript
vue列表单项展开收缩功能之this.$refs的详解
2019/05/05 Javascript
使用jquery-easyui的布局layout写后台管理页面的代码详解
2019/06/19 jQuery
vue自定义正在加载动画的例子
2019/11/14 Javascript
Vue.js 无限滚动列表性能优化方案
2019/12/02 Javascript
JS call()及apply()方法使用实例汇总
2020/07/11 Javascript
vue.js 解决v-model让select默认选中不生效的问题
2020/07/28 Javascript
Python读写docx文件的方法
2018/05/08 Python
tensorflow实现简单的卷积网络
2018/05/24 Python
python 使用递归回溯完美解决八皇后的问题
2020/02/26 Python
PyQt5连接MySQL及QMYSQL driver not loaded错误解决
2020/04/29 Python
马来西亚时装购物网站:ZALORA马来西亚
2017/03/14 全球购物
斯洛伐克电子产品购物网站:DATART
2020/04/05 全球购物
欧姆龙医疗欧洲有限公司:Omron Healthcare Europe B.V
2020/06/13 全球购物
酒店led欢迎词
2014/01/09 职场文书
会计大学生职业生涯规划书范文
2014/01/13 职场文书
艺术设计专业个人求职信
2014/04/10 职场文书
开展警示教育活动总结
2015/05/09 职场文书
七年级作文之英语老师
2019/10/28 职场文书
php 原生分页
2021/04/01 PHP
漫画「狩龙人拉格纳」公开TV动画预告图
2022/03/22 日漫