Câu hỏi Ctrl + Nhập jQuery vào TEXTAREA


Làm cách nào để kích hoạt thứ gì đó khi con trỏ ở trong TEXTAREA và Ctrl+Đi vào bị ép buộc? Sử dụng jQuery. Cảm ơn


75
2017-11-05 22:45


gốc


câu trả lời bạn chấp nhận không hoạt động. Vui lòng thay đổi câu trả lời được chấp nhận của bạn - peter


Các câu trả lời:


Bạn có thể dùng event.ctrlKey cờ để xem liệu Ctrl phím được nhấn, một cái gì đó như thế này:

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

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

Kiểm tra đoạn mã trên đây.


107
2017-11-05 22:55



Điều này không hoạt động trong Google Chrome. Khi nhấn Ctrl + Enter, mã phím là 10, không phải 13. - Znarkus
Điều này không hoạt động. Giải pháp của Yarolslav Yakovlev dưới đây hoạt động tốt. Vui lòng thay đổi câu trả lời được chấp nhận để tiết kiệm thời gian cho mọi người. - Phil Ricketts
Không hoạt động trong Opera. - Andrey Regentov
@ Replete Bạn đã thử nghiệm môi trường nào? Có tài liệu nào về keyCode 10 không? - Sanghyun Lee
Mã khóa 10 không nên xảy ra nữa trên Chrome, hãy xem bugs.chromium.org/p/chromium/issues/detail?id=79407 - swissspidy


Trên thực tế, điều này thực hiện thủ thuật và hoạt động trong tất cả các trình duyệt:

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

liên kết đến js fiddle


119
2018-02-18 16:52



Fiddle không hoạt động trong Firefox 27, có gì sai? - CoDEmanX
Chỉ cần gọi thêm event: if ((event.keyCode == 10 || event.keyCode == 13) && event.ctrlKey) - terales
@Yaroslav: Bạn có thể vui lòng cho biết việc sử dụng "event.keyCode == 10" trong câu trả lời hay không. - Shashank.gupta40
Nếu bất cứ ai vẫn tự hỏi về keyCode 10 và các công cụ chrome khác đọc điều này. - user2422869
@YaroslavYakovlev ctrlKey tương ứng với phím Command trên Mac? - Jacob Stamm


Giải pháp phổ quát

Hỗ trợ OS X.

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

35
2018-04-07 14:16



Đừng bỏ qua câu trả lời này bởi vì nó có điểm thấp hơn, nó chỉ là một câu trả lời mới hơn, nó thực sự tốt hơn. - David Bell


Tôi đã tìm thấy câu trả lời của những người khác không tương thích hoặc không tương thích với nhiều trình duyệt.

Mã này hoạt động google chrome.

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

4
2018-05-15 04:39



Bạn có thể xem xét cải thiện câu trả lời của mình bằng cách thêm các giải thích khác không? Cảm ơn :) Nếu không, điều này sẽ chỉ là một câu trả lời chất lượng thấp cho một câu hỏi chất lượng thấp. - Theolodis
@Valamas: Bạn có thể vui lòng cho biết cách sử dụng "event.keyCode == 10" trong câu trả lời của bạn không. - Shashank.gupta40
Tôi yêu các câu trả lời copy & paster - xamde


Điều này có thể được mở rộng đến một plugin JQuery đơn giản nhưng linh hoạt như sau:

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

Như vậy

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

nên gửi biểu mẫu khi người dùng nhấn ctrl-enter với tiêu điểm trên vùng văn bản của biểu mẫu đó.

(Với cảm ơn https://stackoverflow.com/a/9964945/1017546)


2
2018-01-27 02:14





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

//ctrl on key down set flag

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

0
2017-11-05 22:56





đầu tiên bạn phải đặt cờ khi Ctrl được nhấn, làm điều này onkeydown. sau đó bạn phải kiểm tra keydown của nhập. bỏ đặt cờ khi bạn thấy một khóa cho Ctrl.


0
2017-11-05 22:47





Có lẽ hơi muộn để chơi, nhưng đây là những gì tôi sử dụng. Nó cũng sẽ buộc gửi biểu mẫu là đích hiện tại của con trỏ.

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

0
2017-12-18 19:18