如何在textarea上捕获输入键而不是shift + enter?

IT技术 javascript dom-events
2021-03-09 09:18:19

我正在为 texarea 做这件事。当用户按下 时应该调用一个函数Enter,但按下Shift+时什么都不做Enter

我尝试在这里模拟许多 IM 通信器具有的功能:发送消息Enter但也使用Shift+添加多行Enter

4个回答

测试输入键码 (13) 以及是否按下了 shift 键。

...onkeyup = function(e) {
    if (e.keyCode == 13)
    {
//      if (e.shiftKey === true)
        if (e.shiftKey)  // thruthy
        {
            // new line
        }
        else
        {
            // run your function
        }
        return false;
    }
}

编辑:接受所有真实值e.shiftKey

@Salmonface 在浏览器事件侦听器中,如果在回调中返回 false,则会阻止默认操作。击中enter在一个表单提交按钮默认发送的形式,但如果你返回false,就不会被发送。注意:您必须使用keydownevent 才能阻止默认的按键操作。
2021-04-20 09:18:19
只是有什么问题if (e.shiftKey)这是一个布尔属性。
2021-04-20 09:18:19
我不得不使用“==”而不是“===”
2021-04-24 09:18:19
对不起,如果这是一个愚蠢的问题,但是为什么在 if 的末尾返回 false?
2021-05-11 09:18:19
啊我明白了!谢谢@aorcsik
2021-05-15 09:18:19
element.onkeydown = function(o) {
  o = o || event;
  if (o.shiftKey && o.keyCode == 13) {
    /* shift + enter pressed */
  }
}
为什么不使用正确的格式来提高可读性?
2021-05-01 09:18:19
@Stophface - 不知道为什么我按照我的方式格式化 - 这是一个非常古老的答案。谢谢你的建议!
2021-05-05 09:18:19

我相信您还需要一个 keydown 事件来检查 SHIFT 键,http://www.quirksmode.org/js/keys.html

查看事件对象的 shiftKey 属性,它会告诉您按下键时是否按住了 shift。