【问题标题】:How to simulate a key press by pressing a different key如何通过按不同的键来模拟按键
【发布时间】:2013-12-04 21:44:52
【问题描述】:

当您开始在 Wordpress 搜索插件上输入内容时,我想隐藏搜索输入下方显示的“建议”选项列表,我特别需要的是在按下“删除”时触发“Escape”键事件" 键,我尝试了下面的 jquery 函数,但它没有按我预期的那样工作。

$('form.search-form').keydown(function (e) {

// keycode for Delete key
if (e.keyCode == 46) {
      var a = $.Event("keydown");
      // keycode for Esc key
      a.which = 27;
      a.keyCode = 27;
      $(document).trigger(a); 
}});

有什么帮助吗?提前致谢

【问题讨论】:

    标签: javascript jquery keyboard key


    【解决方案1】:

    已更新(原始问题不清楚)

    Live demo here (click).

    按下删除键时,将keyCode更改为esc键,然后使用trigger模拟按下esc

    $('input').keydown(function (e) {
      // keycode for delete
      if (e.keyCode == 46) {
        console.log('delete key pressed.');
        e.keyCode = 27;
        $(this.target).trigger(e);
      }
    });
    
    $('input').keydown(function (e) {
      // keycode for esc
      if (e.keyCode == 27) {
        console.log('esc key pressed.');
      }
    });
    

    旧答案(因为相似而留在这里。)

    您的问题是X/Y problem。您不需要触发另一个 keydown 事件,您只需要重复相同的功能,因此将esc 事件的代码提取到一个函数中并在del 键的事件中重用。 Live demo here (click).

    $('input').keydown(function (e) {
      // keycode for delete
      if (e.keyCode == 46) {
        myFunction(e);
      }
    });
    
    $('input').keydown(function (e) {
      // keycode for esc
      if (e.keyCode == 27) {
        myFunction(e);
      }
    });
    
    function myFunction() {
      alert('Look, Ma! Code reuse!'); 
    }
    

    更好的是,这样做!

    Live demo here (click).
    $('input').keydown(function (e) {
      // keycodes for delete and esc
      if (e.keyCode == 46 || e.keyCode == 27) {
        myFunction(e);
      }
    });
    
    function myFunction() {
      alert('Look, Ma! Code optimization!'); 
    }
    

    【讨论】:

    • 感谢您的回答,但不幸的是,这不是我想要的。我将用另一个词来解释,我需要将与 Esc 键关联的相同操作触发到另一个键(在本例中为删除)。
    • @peterbetis 这正是我所做的,我向您展示了两种方法。
    • @peterbetis 你不明白吗?在这两个示例中,无论您使用 esc 键还是 delete 键,都会调用 myFunction。两个键的功能完全相同 - 正是您所要求的。
    • 感谢您的努力,可能我解释得不够清楚。再次感谢,但您的解决方案只是调用一个特定的函数,无论两个关键事件中的任何一个被按下。我需要的是附加一个键,默认情况下由另一个键触发相同的操作。
    • @peterbetis 查看我的更新答案。我会问“如何使用不同的键模拟按键?”。谈论事件使问题变得不清楚。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    相关资源
    最近更新 更多