Як мені щось активувати, коли курсор знаходиться в межах TEXTAREA і натиснуто Ctrl+ Enter? Використання jQuery . Дякую
Відповіді:
Ви можете використовувати event.ctrlKey
прапор, щоб побачити, чи натиснута Ctrlклавіша, приблизно так:
$('#textareaId').keydown(function (e) {
if (e.ctrlKey && e.keyCode == 13) {
// Ctrl-Enter pressed
}
});
Перевірте наведений фрагмент тут .
10
ні 13
.
keypress
події код клавіші буде 10, але keydown
або keyup
повідомлятиме 13. Тільки тестувати хром
Насправді цей робить трюк і працює у всіх браузерах:
if ((event.keyCode == 10 || event.keyCode == 13) && event.ctrlKey)
посилання на скрипку js .
Примітки:
keyCode
10, а не 13 ( звіт про помилку ). Тож нам потрібно перевірити будь-який.ctrlKey
є controlна Windows, Linux та macOS (не command). Дивіться також metaKey
.ctrlKey
відповідає клавіші Command на Mac?
if ((e.keyCode == 10 || e.keyCode == 13) && (e.ctrlKey || e.metaKey))
Універсальне рішення
Це також підтримує macOS: прийматимуться як Ctrl+, так Enterі ⌘ Command+ Enter.
if ((e.ctrlKey || e.metaKey) && (e.keyCode == 13 || e.keyCode == 10)) {
// do something
}
e.ctrlKey
виявляє ⌃ Control
та e.metaKey
виявляє ⌘ Command
. Використовуйте це, якщо ви хочете, щоб Ctrl-Enter і Command-Enter ініціювали поведінку.
e.keyCode
з 10
означає Enter на додаток до 13
? У MDN keyCode
документації наведені тільки в 13
якості можливого значення для Enter, випробувані в різних браузерах і операційних системах.
Я знайшов відповіді інших або неповними, або несумісними між браузерами.
Цей код працює 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, фокусуючись на текстовому полі цієї форми.
(Завдяки https://stackoverflow.com/a/9964945/1017546 )
Можливо, трохи пізно в гру, але ось що я використовую. Він також змусить подати форму, яка є поточною метою курсору.
$(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();
}
});
if
... else if
" до одного if (e.ctrlKey && (e.keyCode == 10 || e.keyCode == 13))
.