0

我的 onkeypress 事件在我网站的搜索栏上不起作用。这是我的 javascript 和 html 代码:

window.onload = function() {
    document.getElementById("SearchText").value = getParameterByName("s");

    var a = document.getElementById("SearchLink");

    a.onclick = function() {
        search();
    }
}

function search() {
    var searchResultsUrl = "/search/";
    document.location.href = searchResultsUrl + "?s=" +
    document.getElementById("SearchText").value;
    return false;
}

function getParameterByName(name) {
    var match = RegExp('[?&]' + name + '=([^&]*)')
        .exec(window.location.search);

    return match && decodeURIComponent(match[1].replace(/\+/g, ' '));
}

这是html代码:

<input type="text" id="SearchText" onkeypress="if(SearchText.keyCode==13)search()" />
4

2 回答 2

4

文本框没有keyCode属性 - 这是事件对象的属性。试试这个。

HTML:

<input type="text" id="SearchText" />

JS:

window.onload = function() {
    var textbox = document.getElementById("SearchText");
    textbox.value = getParameterByName("s");

    ... snip ...

    textbox.onkeypress = function (e) {
        if (e.keyCode === 13) {
            search();
        }
    };
}

... snip ...

固定的小提琴。

于 2012-10-08T20:03:39.383 回答
0

onkeypress scriptlet 中的SearchText变量将未定义。我建议在 Javascript 中定义您的事件处理程序,如下所示:

SearchTextbox = document.getElementById("SearchText");
SearchTextbox.onkeypress = function(evt) {
    if (evt.keyCode === 13) {
        // Handle key press event here
    }
}

供你参考:

键盘事件:https ://developer.mozilla.org/en-US/docs/DOM/KeyboardEvent

element.onkeypress:https ://developer.mozilla.org/en-US/docs/DOM/element.onkeypress

编辑:event按照建议更改参数名称。

于 2012-10-08T20:08:21.107 回答