如何通过按其他键来模拟按键

时间:2013-11-20 18:15:47

标签: javascript jquery keyboard key

当我开始在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); 
}});

有任何帮助吗?提前致谢

1 个答案:

答案 0 :(得分:3)

更新(原始问题不清楚)

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!'); 
}