Onkeypress进入事件而不是开火

时间:2012-10-08 19:54:37

标签: javascript

我的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()" />

2 个答案:

答案 0 :(得分: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 ...

A fixed fiddle.

答案 1 :(得分:0)

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

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

供您参考:

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

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

修改:按建议更改了event参数名称。