簡體   English   中英

Ctrl +在TEXTAREA中輸入jQuery

[英]Ctrl+Enter jQuery in TEXTAREA

當光標在TEXTAREA中按下Ctrl + Enter時,如何觸發某些內容? 使用jQuery 謝謝

實際上這個技巧可以在所有瀏覽器中使用:

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

鏈接到js小提琴

筆記:

  • 在Windows和Linux上的Chrome中, 輸入將注冊為keyCode 10,而不是13( 錯誤報告 )。 所以我們需要檢查一下。
  • ctrlKey是Windows,Linux和macOS(不是命令 )的控件 另見metaKey

您可以使用event.ctrlKey標志來查看是否按下了Ctrl鍵,如下所示:

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

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

這里查看上面的代碼段。

通用解決方案

也支持OS X,也就是說, control + entercommand + enter都應該有效。

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

我發現其他人的答案不完整或不兼容跨瀏覽器。

此代碼適用於Google Chrome。

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

這可以擴展為一個簡單但靈活的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

首先你必須在按下Ctrl時設置一個標志,執行onkeydown。 然后你必須檢查輸入的keydown。 當您看到Ctrl的鍵盤時取消設置標志。

$('my_text_area').focus(function{ set_focus_flag });

//ctrl on key down set flag

//enter on key down = check focus flag, check ctrl flag

也許游戲有點晚了,但這就是我用的東西。 它還將強制提交作為光標當前目標的表單。

$(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();
    }
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM