Ctrl +在TEXTAREA中输入jQuery

时间:2009-11-05 22:45:54

标签: javascript jquery html hotkeys

如果光标位于 TEXTAREA 并按下 Ctrl + Enter ,我该如何触发?使用 jQuery 。感谢

8 个答案:

答案 0 :(得分:127)

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

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

链接到js fiddle

答案 1 :(得分:113)

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

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

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

检查上面的代码段here

答案 2 :(得分:53)

通用解决方案

也支持OS X.

if ((e.ctrlKey || e.metaKey) && (e.keyCode == 13 || e.keyCode == 10)) {
    // do something
}

答案 3 :(得分:4)

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

此代码适用于Google Chrome。

$(function ()
{
    $(document).on("keydown", "#textareaId", function(e)
    {
        if ((e.keyCode == 10 || e.keyCode == 13) && e.ctrlKey)
        {
            alert('ctrl+enter');
        }
    });
});

答案 4 :(得分: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时,

应该提交一个表单,并将焦点放在该表单的textarea上。

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

答案 5 :(得分:0)

首先你必须在按下 Ctrl 时设置一个标志,执行onkeydown。然后你必须检查输入的keydown。当您看到 Ctrl 的密钥时,取消设置标记。

答案 6 :(得分: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

答案 7 :(得分: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();
    }
});