101

カーソルがTEXTAREA内にあり、Ctrl+Enterが押されたときに何かをトリガーするにはどうすればよいですか? jQueryを使用します。ありがとう

4

8 に答える 8

148

実際、これはトリックを実行し、すべてのブラウザで機能します。

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

jsフィドルへのリンク。

ノート:

  • WindowsおよびLinux上のChromeでは、13ではなく10enterとして登録されます(バグレポート)。したがって、どちらかを確認する必要があります。keyCode
  • ctrlKeycontrolWindows、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 に答える
4

他の人の回答が不完全であるか、ブラウザ間の互換性がないことがわかりました。

このコードは Google Chrome で動作します。

$(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まず、が押されたときにフラグを設定する必要があります。これはキーダウンで行います。次に、Enterキーを押す必要があります。のキーアップが表示されたら、フラグの設定を解除します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 に答える