JS倒计时,不会重复执行

摘要:
"免费获取验证码":);varhander=setInterval;}第二种效果是点击按钮后,按钮被禁用,在另一处显示倒计时˂!

直接上代码,亲自测试了的,没问题咯

第一种是按钮上直接显示倒计时,

<html> 
<head> 
<title>点击获取验证码按钮后按钮变灰,倒计时一段时间后又可重复点击</title> 
<script type="text/javascript" src="http://apps.bdimg.com/libs/jquery/1.6.4/jquery.js"></script>
</head> 
<body> 
<input type="button" id="btn" value="免费获取验证码" onclick="timer(10)" /> 
<script type="text/javascript">function timer(time) {
    var btn = $("#btn");
    btn.attr("disabled", true);  //按钮禁止点击
    btn.val(time <= 0 ? "免费获取验证码" : ("" + (time) + "秒后可发送"));
    var hander =setInterval(function() {
        if (time <= 0) {
            clearInterval(hander); //清除倒计时
            btn.val("免费获取验证码");
            btn.attr("disabled", false);
            return false;
        }else{
            btn.val("" + (time--) + "秒后可发送");
        }
    }, 1000);
}
</script> 
</body> 
</html>

第二种效果是点击按钮后,按钮被禁用,在另一处显示倒计时

<!doctype html>
<html>
<head>
    <meta charset="utf-8">
    <title></title>
    <script src="https://cdn.bootcss.com/jquery/2.0.0/jquery.min.js">
    </script>
    <style>
        *{
            margin: 0;
            padding: 0;
        }

        #ant {
             150px;
            height: 50px;
            color: red;
            text-align: center;
            line-height: 50px;
            margin: 0px auto;
        }
    </style>
    <script>function test() {
           
            var count = 10;
            var timer = null;
            timer =setInterval(function () {
                if (count > 0) {
                    count = count - 1;
                    $("#ant").html(count + "秒后再试");
                    $("#sendCode").attr("disabled", "disabled");
                }

                else{
                    $("#sendCode").removeAttr("disabled", "disabled");
                    $("#sendCode").html("发送验证码");
                    clearInterval(timer);
                }
            }, 1000);
        }
    </script>
</head>
<body>
    <input type="button" value="发送验证码" onclick="test()" id="sendCode" />
    <div id="ant">0</div>
</body>
</html>

有的朋友说第一种有问题,当使用来发送短信的时候,会发送两条短信,毛病还没找到,有解决了的大神麻烦指点下,谢谢了

免责声明:文章转载自《JS倒计时,不会重复执行》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇vue $forceUpdate()强制刷新彻底修改Google Chrome浏览器的安装目录下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

JS实现刷新iframe的方法

<iframe src="http://t.zoukankan.com/1.htm" name="ifrmname" id="ifrmid"></iframe> 方案一:用iframe的name属性定位 <input type="button" name="Button" value="Button"onclick="docu...

js 预览 excel,js-xlsx的使用

js-xlsx 介绍 由SheetJS出品的js-xlsx是一款非常方便的只需要纯JS即可读取和导出excel的工具库,功能强大,支持格式众多,支持xls、xlsx、ods(一种OpenOffice专有表格文件格式)等十几种格式。本文全部都是以xlsx格式为例。 官方github:https://github.com/SheetJS/js-xlsx 本...

js 递归树结构数据查找父级

1.json树数据查找所有父级--完成 json:树结构数据 var arrData =[{ "label": "中国", "City": null, "value": "0", "children": [{ "label": "河北", "City": "0",...

JS中图片飞飞效果

当鼠标在界面上移动的时候,后面有一连串的图片跟随者一起飘动,效果如下:       实现的基本思想:准备五个img标签,为了方便控制都放在一个div里面,设置div的定位方式为 fixed,设置成这中定位方式主要是为了解决在页面出现滚动条的情况下,图片还能够跟随鼠标移动。然后再鼠标移动的时候,延时给每一个图片设置定位的left和top距离就OK了。HTM...

New Moto X 2014 全版本RSD&amp;amp;Fastboot刷官方底包教程

本来我是不想写教程的,因为这样的教程实在是太多了,基本上大家也都会了,为什么还要多次一举,发来发去的呢?实在没什么意义!但是我觉得吧,别人的教程写的都太过简单,太过明了了,有时候我们很难理解,这到底是怎么操作的,他一句话就概括了,我们却一头雾水,不知道如何做到,然后又要问东问西去解答。首先要了解我们为什么要刷底包,刷底包有什么作用?底包就像是window的...

[阮一峰]Linux 守护进程的启动方法

"守护进程"(daemon)就是一直在后台运行的进程(daemon)。 本文介绍如何将一个 Web 应用,启动为守护进程。 一、问题的由来 Web应用写好后,下一件事就是启动,让它一直在后台运行。 这并不容易。举例来说,下面是一个最简单的Node应用server.js,只有6行。 var http = require('http'); http...