我需要一個針對「默認按鈕」的老化問題的解決方案。 即你在文本框中輸入,但在表單上有一個不是你想要觸發的提交按鈕(或者你可能不希望表單根本沒有觸發)。良好的解決方案'防止表單上的默認按鈕'問題?
我想知道下面的'解決方案'。儘管我可以說出來,但是應該是可靠的。
裏面的形式第一件事是一個不可見的按鈕。然後一些jquery立即禁用它。如果你在表單上按下回車鍵,這個按鈕將被視爲「默認按鈕」並被觸發,但由於'return false'事件處理程序不做任何事情。
我之前見過的解決方案依賴於諸如keydown事件處理程序之類的東西,或者其他看似複雜/難以在每個瀏覽器中測試的東西。
我的解決方案(我以前沒見過,但可能不是唯一的)看起來更簡單,我認爲非常可靠。您甚至可以知道javascript是否被禁用,並且有人按下了輸入,因爲服務器將以表單數據接收此按鈕。
<form action="/store/checkout" method="post">
<input id="btnFakeSubmit" name="FakeSubmit" src="/images/pixel.gif"
style="width:1px; height:1px; position:absolute;" type="image" />
<script>
$('#btnFakeSubmit').click(function() {
return false;
});
</script>
這個解決方案有什麼建議 - 包括隱藏在所有瀏覽器按鈕的最好方式。
你是說敲擊回車鍵觸發表格下的「第一個」按鈕!這不是在我的瀏覽器和我的表單(Firefox 3.5) – hasen 2009-11-07 06:31:50
@hasen足夠有趣的情況下發生的,我原來的問題是'第一個按鈕在所有瀏覽器下觸發',然後它變成這個。恩,不得不檢查一下。 FF做什麼?你不使用一些圖書館搞亂關鍵事件處理程序或任何東西? – 2009-11-07 10:48:42
不知道FF做了什麼,我認爲它觸發了提交,但經過進一步檢查,似乎並非如此。至少如果沒有提交按鈕;它似乎沒有做任何事情。 – hasen 2009-11-07 11:13:07