javascript - 當在輸入文字元素中按下 'enter' 時停止頁面刷新
有沒有辦法在按下輸入欄位的 Enter 鍵時,阻止網頁完全重新整理?
我想要建立一個搜尋欄位,當按下 Enter 時可以取得其中的文字來篩選物件,並且只顯示包含搜尋欄位文字的物件。
我嘗試了以下方法來捕捉 Enter 鍵,但它不起作用。
function setupSearchField() {
document.getElementById("searchField").onKeyDown = function(event) {
var holder;
if (window.event) {
holder = window.event.keyCode;
} else {
holder = event.which;
}
keyPressed(holder);
}
}
function keyPressed(key) {
if (key == 13) {
event.cancelBubble = true;
return false;
}
}
答案#1
如果輸入元素在表單內,且該表單實際上並未提交到伺服器,請移除該表單。
你的程式碼無法運作的原因是因為 onkeydown 事件應該使用小寫,而且你實際上並沒有在其中返回任何東西(試試 return keyPressed(holder); —— 或者直接把 keyPressed 函數的程式碼移到 setupSearchField 裡,因為在我看來把它作為一個獨立函數似乎沒什麼意義)。
答案#2
當只有一個文字輸入時,不管你的按鈕(如果有的話)是否有 type="submit",都會發生這種情況。這裡有記錄。http://www.w3.org/MarkUp/html-spec/html-spec_8.html#SEC8.2 因此,正如其他人之前建議的,你只需要停止這個預設行為。