Як мені щось активувати, коли курсор знаходиться в межах 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 .
Примітки:
keyCode10, а не 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)).