JS實現60s倒計時(親測有效),及span標簽如何使用和禁用onclick事件


效果如下圖:點擊按鈕出現60秒倒計時,60s內按鈕不可用,倒計時到了時間方可再次點擊獲取。

另外還有一個知識點,只有input 及button這樣的表單元素有disbale屬性,如何設置是否可用屬性的方法一般用$("#id").attr('disbaled','true')及$("#id").prop('disbaled','false'),對span img這樣的沒有disbale的屬性,這種方法就不起作用了,此時可用$("#id").setAttribute('onclick',function())或$("#id").removeAttribute("onclick")方法來設置事件是否可用。

以下是所有代碼,復制即可使用:

 1 <!DOCTYPE html>
 2 <html>
 3 <head>
 4     <title>驗證碼倒計時</title>
 5     <script type="text/javascript" src="http://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
 6     <style type="text/css" >
 7         .validate-div input{
 8             width:130px;
 9             float:left;
10             line-height:30px;
11         }
12         .validation{
13             float:left;
14             width: 85px;
15             background-color: #2eaef1;
16             border-radius: 5px;
17             margin-left: 20px;
18             text-align: center;
19             margin-top: 3px;
20         }
21         .validation span{
22             color: #fff;
23             line-height:30px;
24             font-size: 14px;
25         }
26     </style>
27 </head>
28 
29 <body>
30 <div class="validate-div">
31     <input type="text" class="validation-code" id="validation-code" name="smscode" placeholder="輸入驗證碼" >
32     <div class="validation">
33         <span class="" id="validate_span" onclick="sendsms(this);">獲取驗證碼</span>
34     </div>
35 </div>
36 </body>
37 </html>
38 
39 <script type="text/javascript">
40     //發送驗證碼函數
41     function sendsms(e){
42         /*發送驗證碼功能*/
43         countdown(e);                                   //若發送驗證碼成功,則調用倒計時函數
44     }
45     //倒計時函數
46     var time = 10;
47     function countdown(e){
48         if (time == 0) {
49             //e.setAttribute('disabled',false);         對沒有disbaled屬性的span標簽,此方法無效
50             e.setAttribute("onclick","sendsms(this)");
51             $("#validate_span").html("獲取驗證碼");
52             time = 10;
53         }else{
54             //e.attr('disabled',true);                  對沒有disbaled屬性的span標簽,此方法也無效
55             //e.setAttribute("onclick", '');            這樣寫也可以
56             e.removeAttribute("onclick");
57             $("#validate_span").html("重新發送(" + time + ")");
58             time--;
59             setTimeout(function() {
60                 countdown(e)
61             },1000)
62         }
63     }
64 </script>
65 </body>
66 </html>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM