網站搜尋

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 因此,正如其他人之前建議的,你只需要停止這個預設行為。