關於click和submit的筆記


click主要用於元素的點擊時的響應事件,而submit是指表單元素form的提交事件。

但是,當click加入到表單的提交按鈕時,事情似乎就有點復雜,總是忘記了。這兩天搜了下,又實踐了一下。

主要用到的代碼:

 1 <!DOCTYPE html>
 2 <html>
 3  <head>
 4   <meta http-equiv="Content-Type" CONTENT="text/html; charset=UTF-8"/>
 5   <title>模板</title>
 6 <style type="text/css">
 7   *{
 8     margin: 0;
 9     padding: 0;
10   }
11   div.content{
12 
13    margin:0 auto;
14    text-align:center;
15   }
16   
17 </style>
18   
19  </head>
20  <body>
21   <div class="content">
22     <form id="form1" onsubmit="ddsubmit();return false;" >
23       <input name="txt" type="text" value="dee" />
24       <input name="sub" type="submit" onclick="return ddclick();" value="sub" />
25     </form>
26   </div>
27   <script type="text/javascript">
28     var form = document.getElementById("form1");
29     var sub = form.sub;
30     function ddclick(){
31       console.log("submit element click.");
32     //  alert("dd");
33       // return false;
34     }
35     function ddsubmit(){
36       console.log("submit on");
37       alert("da");
38     }
39   </script>
40  </body>
41 </html>

主要有三點:

1.click和submit的順序問題

  點擊提交按鈕時,一般先觸發click事件,然后再觸發submit事件。

  這點倒是沒什么好糾結的,click是在元素界面上的事件,submit屬於表單控件上的事件。

     onclick是元素在點擊的時候觸發的點擊處理函數,而onsubmit是表單“點擊”提交時,表單前的驗證處理函數。為什么說“點擊”提交呢?

 

2.響應事件的觸發后續問題

  通常我們用到的是響應處理函數,用於處理事件發生時的數據處理。

      這里主要說的是click的處理后續和submit的處理后續:click->click響應事件->submit響應事件->submit

    click的處理事件完成后,該是輪到submit事件的處理以及處理后的submit.

  而主要關注點在於,是否能夠在每個節點處設置些什么來停止后續節點執行?

      我們在用onclick="method();"時,只是響應事件執行了method這個方法,而如果寫成onclick="return method();"則會將method的執行結果return。

  關鍵在return,當return false的時候,onclick響應處理完成后,后續事件就不執行下去了;同樣的,在onsubmit上也寫同樣的return false 也是最終不會submit。

// 2.1  處理順序上好特別,直到寫的時候才發現,click響應是在click之后,submit則是在submit響應之前?

2.2似乎還可以在響應事件處理中,用 event.preventDefault(); //event 事件參數

 

3.submit的響應事件的不觸發

  我們如果直接用javascript代碼來執行表單的提交的話(即 form.submit()),是不會觸發onsubmit事件的。

      這里要順道提一下,我如果執行submit按鈕的click事件,是會在執行完click之后跟着執行submit(表述遵從2提到的觸發后續問題)。

 


免責聲明!

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



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