我有一個HTML頁面上的多個提交按鈕,執行不同的操作的窗體。但是,當用戶在文本輸入中鍵入一個值並點擊輸入時,瀏覽器通常會像下一個提交按鈕一樣被激活。我希望發生特定的動作,所以一個解決方案,我發現是把無形的提交按鈕到HTML討論的文字輸入後直接,就像這樣:使用Javascript來更改哪些提交被激活輸入密鑰按
<input type="text" name="something" value="blah"/>
<input type=submit name="desired" value="Save Earth" style="display: none"/>
...
<input type=submit name="something_else" value="Destroy Earth" />
...
<input id="foobar" type=submit name="desired" value="Save Earth" />
這就像一個魅力在大多數瀏覽器,除了它不適用於Safari和Chrome等Webkit瀏覽器。出於某種原因,他們跳過不可見的提交按鈕。我一直在試圖弄清楚如何攔截輸入按鍵並使用Javascript激活正確的提交,但是我一直無法使其正常工作。攔截keydown並將焦點設置爲正確提交不起作用。
有沒有什麼方法可以使用Javascript或其他方式來選擇當用戶在HTML表單的文本輸入中點擊回車鍵時使用哪個提交按鈕?
編輯:爲了澄清,表單不能要求Javascript從根本上「工作」。我不關心在webkit瀏覽器上如果沒有Javascript,enter鍵提交是不可取的,但我不能刪除或更改提交按鈕的順序。
這是我試過的,它不會改變webkit瀏覽器中的提交行爲。
工作原理是將以下代碼中的焦點()更改爲click()。
document.onkeypress = processKey;
function processKey(e)
{
if (null == e)
e = window.event ;
if (e.keyCode == 13) {
document.getElementById("foobar").click(); // previously: focus()
}
}
編輯:最終的解決方案:
作品與每一個瀏覽器,只攔截在需要時enter鍵:
HTML:
<input type="text" name="something" value="blah"
onkeydown="return processKey(event)" />
<input type=submit name="desired" value="Save Earth" style="display: none"/>
...
<input type=submit name="something_else" value="Destroy Earth" />
...
<input id="foobar" type=submit name="desired" value="Save Earth" />
的Javascript:
function processKey(e)
{
if (null == e)
e = window.event ;
if (e.keyCode == 13) {
document.getElementById("foobar").click();
return false;
}
}
可以嘗試下面我舉的例子。使用e.which而不是e.keycode – Tester101 2008-12-19 21:22:37