Как вызвать что-то, когда курсор находится в пределах TEXTAREA и Ctrl + Enter? Использование jQuery. Благодаря
Ctrl + Enter jQuery в TEXTAREA
Ответ 1
Вы можете использовать флаг event.ctrlKey
, чтобы увидеть, нажата ли клавиша Ctrl, что-то вроде этого:
$('#textareaId').keydown(function (e) {
if (e.ctrlKey && e.keyCode == 13) {
// Ctrl-Enter pressed
}
});
Проверьте приведенный выше фрагмент здесь.
Ответ 2
На самом деле этот работает и работает во всех браузерах:
if ((event.keyCode == 10 || event.keyCode == 13) && event.ctrlKey)
ссылка на js fiddle.
Примечания:
- В Chrome в Windows и Linux enter будет зарегистрирован как
keyCode
10, а не 13 (отчет об ошибках). Таким образом, мы должны проверить либо. ctrlKey
- это control в Windows, Linux и macOS (не command). Смотрите такжеmetaKey
.
Ответ 3
Универсальное решение
Это также поддерживает macOS: будут приняты Ctrl + Enter и ⌘ Command + Enter.
if ((e.ctrlKey || e.metaKey) && (e.keyCode == 13 || e.keyCode == 10)) {
// do something
}
Ответ 4
Я нашел ответы других либо неполными, либо не совместимыми с кросс-браузером.
Этот код работает с Google Chrome.
$(function ()
{
$(document).on("keydown", "#textareaId", function(e)
{
if ((e.keyCode == 10 || e.keyCode == 13) && e.ctrlKey)
{
alert('ctrl+enter');
}
});
});
Ответ 5
Это можно расширить до простого, но гибкого плагина 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.
(Благодаря fooobar.com/questions/13437/...)
Ответ 6
сначала нужно установить флаг при нажатии Ctrl, сделать это onkeydown. то вам нужно проверить ввод ключа. отключите флаг, когда вы видите клавиатуру для Ctrl.
Ответ 7
$('my_text_area').focus(function{ set_focus_flag });
//ctrl on key down set flag
//enter on key down = check focus flag, check ctrl flag
Ответ 8
Возможно, немного поздно в игре, но вот что я использую. Он также заставит представить форму, которая является текущей целью курсора.
$(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();
}
});