0

在我的网站上,我可以让用户通过按 来使用搜索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 中不起作用(调试模式除外,这令人惊讶)。请帮助我让它在所有这些浏览器中正常工作。

4

2 回答 2

1

通过绑定多个事件停止使事情复杂化,因为keypress并且keyup并不总是返回相同的值,并且该函数将被多次调用,每次触发一次。此外,e.which在 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');
    });
});
于 2013-02-22T15:37:12.150 回答
0

为此,您不需要任何 JavaScript。

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

除非您特别希望表单在禁用 javascript 的情况下无法使用。

于 2013-02-22T16:21:05.740 回答