關於表單自動提交的問題及解決方式


在js中,我們常常會用到表單提交,但小編今天遇到一個問題:在刪除所有引用的js文件之后,頁面還是刷新

最后發現問題如下:

在js中,使用表單提交,即使你不寫$("XXX").submit()也會使得表單提交,那如何尋找這種問題解決方式呢?

 

總結問題及解決方式如下:

(1)使用onsubmit()阻止表單提交,但是會有一個觸發問題,onsubmit 事件只有在表單中的確認按鈕被點擊時發生觸發。

   原因如下:

          先看一段代碼:                        

 1 <form action="index.jsp" method="post" onsubmit="submitTest();"> 
 2 <INPUT value="www"> 
 3 <input type="submit" value="submit"> 
 4 </form> 
 5 
 6 <SCRIPT LANGUAGE="JavaScript"> 
 7 <!-- 
 8 function submitTest() { 
 9 // 一些邏輯判斷return false; 
10 } 
11 //--></SCRIPT> 

 

          在點擊該submit按鈕時並沒有發生觸發事件,原因為何?應該在onsubmit中加上return submitTest();onsubmit屬性就像是<form>這個html對象的一個方法名,其值(一字符串)就是其方法體,默認返回true; 

submitTest()雖然返回false,但我們只執行了此函數,沒有對其結果進行任何處理,而onsubmit="return submitTest()利用到了它的返回值,達到了預期效果。

 

 

(2)使用return false來阻止表單的默認行為

    請看如下代碼:

 1 <form name="loginForm" action="login.aspx" method="post">
 2  <button type="submit" value="Submit" id="submit">Submit</button>
 3 </form>
 4  
 5 <script>
 6  var submitBtn = document.getElementById("submit");
 7  
 8  submitBtn.onclick = function (event) {
 9   alert("preventDefault!");
10   return false;
11  };
12 </script>

 

 

 

  最后:事件處理函數返回false的問題,在大多數情況下,為事件處理函數返回false,可以防止默認的事件行為. 

 

(3)使用preventDefault()來阻止瀏覽器默認提交表單行為

在標准瀏覽器中,阻止瀏覽器默認行為使用event.preventDefault(),而在IE6~8中,使用returnValue屬性來實現。

請看如下代碼:

 1 <form name="loginForm" action="login.aspx" method="post">
 2  <button type="submit" value="Submit" id="submit">Submit</button>
 3 </form>
 4  
 5 <script>
 6  var submitBtn = document.getElementById("submit");
 7  
 8  submitBtn.onclick = function (event) {
 9   alert("preventDefault!");
10   var event = event || window.event;
11   event.preventDefault(); // 兼容標准瀏覽器
12   window.event.returnValue = false; // 兼容IE6~8
13  };
14 </script>

 


免責聲明!

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



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