单击事件调用(按键)不起作用

event call (keypress) by click does not work

我有两个事件:1) 按键:它在数组中搜索数据。 2) click:对于这个事件,应该会强制调用keypress事件,并没有发生。

我用的是trigger()方法。在 keypress 中,我使用了按下 Enter 的条件:if (event.keyCode == 13) {(所有搜索逻辑都在这里)} else {}。正如我已经写过的那样,不会调用带有点击的按键调用。我假设这是由于条件 event.keyCode == 13,但我可能错了。请告诉我,也许在函数调用中您也需要以某种方式注册此条件 (event.keyCode == 13)?如果是这样,请告诉我如何。如果这不是问题,那么问题是什么?我很乐意回答任何问题。从代码中我删除了这个问题不需要的所有内容,留下了基础。谢谢

$(document).on('keypress', '.search_edit', function(event){
          let value = $(this).val().toLowerCase();

          if (event.keyCode == 13) {      
          $('.blog_content').each(function() {
          
            if($(this).text().toLowerCase().indexOf(value) === -1) {
              $(this).addClass('item_none');
            return;
            } else {
              $(this).removeClass('item_none');
                   }             
          });

});

   
$('.tags li a').on('click', function (event) {
      event.preventDefault();
      $('.search_edit').trigger('keypress');
});


////////////////////////////////////////// I tried to do like this. It didn’t help me.

$('.tags li a').on('click', function (event) {
      event.preventDefault();
      event.keyCode = 13;
      $('.search_edit').trigger(jQuery.Event("keypress"));
});

调用一个函数而不是触发按键怎么样?

$(document).on('keypress', '.search_edit', myFunction);

function myFunction(event){
          event.preventDefault();
          let value = $(this).val().toLowerCase();

          if (event.keyCode == 13) {      
          $('.blog_content').each(function() {
          
            if($(this).text().toLowerCase().indexOf(value) === -1) {
              $(this).addClass('item_none');
            return;
            } else {
              $(this).removeClass('item_none');
                   }             
          });
}
   
$('.tags li a').on('click', myFunction);

您可以通过将一个函数绑定到两个事件来实现这一点。

并且在与点击功能绑定时传递您自己的数据,因为这里没有使用 Enter 键的按键,因此您的逻辑不会 运行 按照你的要求。

这是您可以使用的代码:

$(document).on('keypress', '.search_edit', search);

function search(event){
          event.preventDefault();
          let value = $(this).val().toLowerCase();

          if (event.keyCode == 13 || event.data.keyCode == 13) {      
          $('.blog_content').each(function() {
          
            if($(this).text().toLowerCase().indexOf(value) === -1) {
              $(this).addClass('item_none');
            return;
            } else {
              $(this).removeClass('item_none');
                   }             
          });
}
   
$('.tags li a').on('click',{keyCode=13}, search);

我在这里传递了等于13的keyCode的值,这将满足您的条件。

或其他方式可以是:

$(document).on('keypress', '.search_edit', search);
    
    function search(event){
              event.preventDefault();
              let value = $(this).val().toLowerCase();
    
              if (event.keyCode == 13 ) {      
              $('.blog_content').each(function() {
              
                if($(this).text().toLowerCase().indexOf(value) === -1) {
                  $(this).addClass('item_none');
                return;
                } else {
                  $(this).removeClass('item_none');
                       }             
              });
    }

$('.tags li a').on('click', function (event) {
      event.preventDefault();
      event.keyCode = 13;
      search(event);
});

我设法这样做了,而且有效:

$('.tags .tags li a').on('click', function(event) {
      event.preventDefault();
      var tag = $(this).text().trim();
      var event_click_tag_fromblog = $.Event('keypress');

      event_click_tag_fromblog.keyCode = 13;

      $('.search_edit').val(tag);
      $('.search_edit').trigger(event_click_tag_fromblog);

});