2012-06-07 27 views
1

提交按鈕,這是關係到How is the default submit button on an HTML form determined?禁用默認的形式在Chrome

在我的web應用程序的設計,用戶應該能夠按直接提交表單中輸入的文本輸入,在這種情況下,沒有任何的應該提交該表格中的按鈕,因爲它們具有其他功能。爲了避免默認的按鈕問題,我處理了​​事件並以編程方式提交了表單。

當我在Firefox中測試這個時,似乎表單中的第一個按鈕被按下了回車鍵。簡單的解決方案是在​​事件處理程序中禁用該按鈕。

,然而,似乎「聰明」選擇的第一個非禁用的按鈕作爲默認按鈕,將提交使用,即使該按鈕將被​​處理程序立即禁用該按鈕。

效果可以用這個jsFiddle進行測試。在Firefox中,在複選框禁用「第一個」按鈕之後,在輸入中輸入press只會導致一次提交。在Chrome中,即使在兩個按鈕被禁用後,總會有兩個提交,一個來自keydown,另一個來自按鈕按下!

這迫使我更改我的代碼中的所有keydown處理程序以返回false或處理所有按鈕點擊並檢查該按鈕是否被禁用。這兩個似乎都不是很好的代碼。

有什麼更好的建議嗎?

回答

0

也許你可以把它鉤住模糊。試試這個:

<input type="text" ... onblur="submit();" /> 
+0

剛試過這個,不幸的是它沒有工作。輸入永遠不會模糊,即即使表單提交事件來自按鈕,光標仍保留在輸入中。正如我上面所說的,即使在按下回車鍵之前所有按鈕都被禁用,也會使用一些按鈕來提交表單。 –