如何通过按不同的键来模拟按键

How to simulate a key press by pressing a different key

本文关键字:模拟 何通过      更新时间:2023-09-26

当你开始在Wordpress搜索插件上键入一些东西时,我想隐藏搜索输入下面出现的"建议"选项列表,我需要的是在按下"Delete"键时触发"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); 
}});

有什么帮助吗?提前感谢

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

现场演示(点击)。

按下删除键时,将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问题。您不需要触发另一个keydown事件,只需要重复相同的功能,所以将esc事件的代码提取到一个函数中,并在del键的事件中重用。现场演示(点击)。

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

做得更好

在此处进行现场演示(单击)。
$('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!'); 
}