2012-03-22 55 views
120

我有一個HTML表單,我使用幾個按鈕。問題是無論我點擊哪個按鈕,即使按鈕不是「submit」類型,也會提交表單。例如按鈕如:<button>Click to do something</button>,導致表單提交。禁用表單自動提交按鈕單擊

對於每個按鈕做e.preventDefault()都很痛苦。

我使用jQuery和jQuery UI並且網站在HTML5中。

有沒有辦法禁用這種自動行爲?

回答

277

<button>Click to do something</button>的按鈕是提交按鈕。

設置type="button"改變這一點。 type="submit"是默認值(如specified by the HTML recommendation)。

+5

失去了一天的睡眠徒勞地固定我的代碼,因爲我不知道這個簡單的規範! – palerdot 2013-12-18 06:18:27

+4

迴應palerdot的概念,很高興我在谷歌搜索後發現了這個筆記,並沒有殺死小時。非常知道,非常感謝。 – brooklynsweb 2015-07-28 20:02:43

+0

這很瞭解! – 2016-08-25 17:43:21

5

<button>實際上是提交按鈕,它們沒有其他主要功能。您將不得不將類型設置爲按鈕。
但是,如果你像下面那樣綁定你的事件處理程序,那麼你的目標是所有的按鈕,並且不必爲每個按鈕手動執行它!

$('form button').on("click",function(e){ 
    e.preventDefault(); 
}); 
+0

它是'e.preventDefault();'。 – hlcs 2017-09-10 21:59:06

+0

謝謝,有點錯過了5年前;-) – 2017-09-12 09:43:20

11

這是不難做你想做的。 你可以只嘗試使用返回假(回報每一位DOM元素虛假覆蓋缺省行爲)這樣的:

myform.onsubmit=function() 
{ 
    //do what you want; 
    return false; 
} 

,然後使用myform.submit提交表單()

或者:

mybutton.onclick=function() 
{ 
    //do what you want; 
    return false; 
} 

但我認爲輸入類型=「按鈕」/按鈕類型=「按鈕」不會提交您的表單,你可以使用它們沒有任何問題。

-1

,如果你想直接添加到輸入的屬性,使用此

onclick="return false;" 

<input id = "btnPlay" type="button" onclick="return false;" value="play" /> 

這將阻止表單提交行爲