101

当光标在TEXTAREA内并按下Ctrl+时,如何触发某些内容?Enter使用jQuery。谢谢

4

8 回答 8

148

实际上,这个技巧可以在所有浏览器中使用:

if ((event.keyCode == 10 || event.keyCode == 13) && event.ctrlKey)

链接到js 小提琴

笔记:

  • 在 Windows 和 Linux 上的 Chrome 中,enter将注册为keyCode10,而不是 13(错误报告)。所以我们需要检查任何一个。
  • ctrlKey适用control于 Windows、Linux 和 macOS(不是command)。另请参阅metaKey
于 2012-02-18T16:52:33.877 回答
133

您可以使用event.ctrlKey标志来查看是否Ctrl按下了键,如下所示:

$('#textareaId').keydown(function (e) {

  if (e.ctrlKey && e.keyCode == 13) {
    // Ctrl-Enter pressed
  }
});

在此处检查上述代码段。

于 2009-11-05T22:55:19.557 回答
94

通用解决方案

这也支持 macOS:Ctrl+Enter⌘ Command+Enter都将被接受。

if ((e.ctrlKey || e.metaKey) && (e.keyCode == 13 || e.keyCode == 10)) {
    // do something
}
于 2016-04-07T14:16:09.870 回答
4

我发现其他人的答案不完整或不兼容跨浏览器。

此代码适用于谷歌浏览器。

$(function ()
{
    $(document).on("keydown", "#textareaId", function(e)
    {
        if ((e.keyCode == 10 || e.keyCode == 13) && e.ctrlKey)
        {
            alert('ctrl+enter');
        }
    });
});
于 2014-05-15T04:39:06.053 回答
2

这可以扩展到一个简单但灵活的 JQuery 插件,如下所示:

$.fn.enterKey = function (fnc, mod) {
    return this.each(function () {
        $(this).keypress(function (ev) {
            var keycode = (ev.keyCode ? ev.keyCode : ev.which);
            if ((keycode == '13' || keycode == '10') && (!mod || ev[mod + 'Key'])) {
                fnc.call(this, ev);
            }
        })
    })
}

因此

$('textarea').enterKey(function() {$(this).closest('form').submit(); }, 'ctrl')

当用户按下 ctrl-enter 并关注该表单的文本区域时,应该提交一个表单。

(感谢https://stackoverflow.com/a/9964945/1017546

于 2015-01-27T02:14:35.577 回答
0

首先,您必须在Ctrl按下时设置一个标志,执行此操作 onkeydown。然后你必须检查回车键。当您看到Ctrl.

于 2009-11-05T22:47:40.707 回答
0
$('my_text_area').focus(function{ set_focus_flag });

//ctrl on key down set flag

//enter on key down = check focus flag, check ctrl flag
于 2009-11-05T22:56:23.603 回答
0

也许游戏有点晚了,但这是我使用的。它还将强制提交作为光标当前目标的表单。

$(document.body).keypress(function (e) {
    var $el = $(e.target);
    if (e.ctrlKey && e.keyCode == 10) {
        $el.parents('form').submit();
    } else if (e.ctrlKey && e.keyCode == 13) {
        $el.parents('form').submit();
    }
});
于 2017-12-18T19:18:18.137 回答