触发"click"和"enter"上的事件

kir*_*rby 70 jquery jquery-selectors

我的网站上有一个搜索框.目前,用户必须单击该框旁边的提交按钮才能通过jquery的帖子进行搜索.我想让用户也按Enter进行搜索.我怎样才能做到这一点?

JQUERY:

$('document').ready(function(){
    $('#searchButton').click(function(){
        var search = $('#usersSearch').val();
        $.post('../searchusers.php',{search: search},function(response){
            $('#userSearchResultsTable').html(response);
        });
    });
});
Run Code Online (Sandbox Code Playgroud)

HTML:

<input type='text' id='usersSearch'  /><input type='button' id='searchButton' value='search' />
Run Code Online (Sandbox Code Playgroud)

Sha*_*oli 103

keypressusersSearch文本框上使用事件并查找Enter按钮.如果按下输入按钮,则触发搜索按钮单击事件,该事件将执行其余工作.试试这个.

$('document').ready(function(){
    $('#searchButton').click(function(){
        var search = $('#usersSearch').val();
        $.post('../searchusers.php',{search: search},function(response){
            $('#userSearchResultsTable').html(response);
        });
    })
    $('#usersSearch').keypress(function(e){
        if(e.which == 13){//Enter key pressed
            $('#searchButton').click();//Trigger search button click event
        }
    });

});
Run Code Online (Sandbox Code Playgroud)

演示

  • 我刚刚发现的使用keyup的缺点:您将无法阻止默认操作,因为keyup事件仅在_after_之后被触发,因此该键的默认操作已执行(请参阅[here](http:// www .quirksmode.org / dom / events / keys.html))。 (2认同)

Gus*_*ues 53

您可以.on()使用if函数内部调用两个事件侦听器:

$(function(){
  $('#searchButton').on('keypress click', function(e){
    var search = $('#usersSearch').val();
    if (e.which === 13 || e.type === 'click') {
      $.post('../searchusers.php', {search: search}, function (response) {
        $('#userSearchResultsTable').html(response);
      });
    }
  });
});
Run Code Online (Sandbox Code Playgroud)

  • 为什么这个答案没有得到更多的选票?我的意思是这是较小的代码块(比如不添加另一个事件来触发点击).这有什么缺点吗? (9认同)
  • 您需要从搜索字段捕获按键,然后从搜索按钮中单击.这是两个独立的DOM实体,所以这段代码不起作用. (2认同)

jop*_*pke 5

这样的东西会起作用

$('#usersSearch').keypress(function(ev){
    if (ev.which === 13)
        $('#searchButton').click();
});
Run Code Online (Sandbox Code Playgroud)