Jquery 关键事件不存在';在谷歌浏览器中无法正常工作

Jquery 关键事件不存在';在谷歌浏览器中无法正常工作,jquery,asp.net,Jquery,Asp.net,在我的网站上,在搜索输入字段中键入字符串后,我可以通过按Enter键让用户使用搜索。下面是一些jQuery代码来说明这一点: $(document).ready(function () { $('#search-input').on('keydown keyup keypress', function (event) { event = event || windows.event; if (event.keyCode == 13 || event.whi

在我的网站上,在搜索输入字段中键入字符串后,我可以通过按Enter键让用户使用搜索。下面是一些jQuery代码来说明这一点:

$(document).ready(function () {
    $('#search-input').on('keydown keyup keypress', function (event) {
        event = event || windows.event;
        if (event.keyCode == 13 || event.which == 13) {
            $("#search-button").click();
        }
    });

    $("#search-button").click(function () {
        var theUrl = "/search.aspx?search=" + document.getElementById('search-input').value;
        window.location = theUrl;
    });
}
在我的母版页上,我有以下代码:

<input id="search-input" name="search" type="text" placeholder="Search..." />
<button id="search-button" type="button"></button>


尽管这在FireFox和IE9/IE8中都可以使用,但在Chrome中却不起作用(除非是在调试模式下,这是令人惊讶的)。请帮助我使其在所有这些浏览器中正常工作。

不要通过绑定多个事件来使事情复杂化,因为
keypress
keyup
并不总是返回相同的值,并且该函数将被多次调用,每次触发事件一次。另外,
e.
在jQuery中被规范化了,这又让它变得太复杂了:

$(document).ready(function () {
    $("#search-button").on('click', function() {
         var theUrl = "/search.aspx?search=" + $('#search-input').val();
         window.location = theUrl;
    });
    $('#search-input').on('keyup', function(e) {
         if (e.which == 13) 
            $("#search-button").trigger('click');
    });
});

您不需要任何JavaScript来完成此操作

<form method="GET" action="/search.aspx">
    <input name="search" type="text" placeholder="Search..." />
    <button type="submit">Submit</button>
</form>

提交

除非您特别希望表单不能在禁用javascript的情况下工作。

谢谢您的回答。你的代码是真正的跨浏览器,并帮助解决了我的问题。只有当用户在字段中按enter键时,才会重定向。呸!我没有真正思考,忘记了nr.13键if条件,所以当然这样也没关系!在jQuery中,坚持基本原则通常效果最好。