【问题标题】:Trigger event on hold of shift+enter key按住 shift+enter 键触发事件
【发布时间】:2021-06-02 12:43:50
【问题描述】:

我试图在按下 shift + enter 键时调用一个函数。

我正在尝试的是这个

$('.o_searchview_input').on('keydown', function(event) {
debugger;
  if (event.keyCode == 13 && !event.shiftKey) {
    $(this).trigger(jQuery.Event("keydown", {
      keyCode: 13, // ENTER
      shiftKey: true
    }));
  } else if (event.keyCode == 13 && event.shiftKey) {
    console.log('shift + enter');
  }
});

但它会自动按下 shift 键。

我担心 JavaScript 中是否有任何选项可以在按下两个键时触发偶数?

【问题讨论】:

标签: javascript


【解决方案1】:

没有检查是否按下了多个键的事件。 如果要检查 2 个键,则需要创建 keydownkeyup 事件来跟踪哪些键被按下但未手动释放。

此规则的例外是 Shift AltCtrl/Cmd 这些被称为键修饰符,可以像在您的示例中一样使用:

if (event.keyCode == 13 && event.shiftKey) // do something

【讨论】:

    【解决方案2】:

    shift + enter 上使用event.preventDefault() 可以为您完成这项工作

    $('.o_searchview_input').on('keydown', function(event) {
      if (event.keyCode == 13 && event.shiftKey) {
        event.preventDefault(); // prevent default action
        console.log('shift + enter');
        // call your function
      }
    });
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    
    `Enter` adds new line, Where as `Shift + Enter` is prevented
    <textarea class="o_searchview_input"></textarea>

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-15
      • 2010-12-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多