Ctrl + Enter jQuery en el área de texto
-
18-09-2019 - |
Pregunta
¿Cómo puedo activar algo cuando el cursor se encuentra dentro de TEXTAREA y Ctrl + Intro se presiona? Con jQuery . Gracias
Solución
Puede usar la bandera event.ctrlKey
para ver si el Ctrl se presiona llave, algo como esto:
$('#textareaId').keydown(function (e) {
if (e.ctrlKey && e.keyCode == 13) {
// Ctrl-Enter pressed
}
});
Compruebe el fragmento anterior aquí .
Otros consejos
En realidad, éste es el truco y funciona en todos los navegadores:
if ((event.keyCode == 10 || event.keyCode == 13) && event.ctrlKey)
Notas:
Solución universal
Compatible con OS X, así, es decir, tanto el control + introduzca y comando + introduzca debería funcionar .
if ((e.ctrlKey || e.metaKey) && (e.keyCode == 13 || e.keyCode == 10)) {
// do something
}
He encontrado respuestas de otros, ya sea incompleto o no entre navegadores compatibles.
Este código funciona Google Chrome.
$(function ()
{
$(document).on("keydown", "#textareaId", function(e)
{
if ((e.keyCode == 10 || e.keyCode == 13) && e.ctrlKey)
{
alert('ctrl+enter');
}
});
});
Esto puede extenderse a una simple y flexible, pero-plugin JQuery como en:
$.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);
}
})
})
}
Así
$('textarea').enterKey(function() {$(this).closest('form').submit(); }, 'ctrl')
debe presentar un formulario cuando el usuario presiona Ctrl-Enter con el foco en área de texto de esa forma.
(Con agradecimiento a https://stackoverflow.com/a/9964945/1017546 )
$('my_text_area').focus(function{ set_focus_flag });
//ctrl on key down set flag
//enter on key down = check focus flag, check ctrl flag
primero hay que establecer un indicador cuando Ctrl es presionado, hacer esto onkeydown. entonces usted tiene que comprobar el keydown de entrar. desarmar el indicador cuando se ve un keyup para Ctrl .
Tal vez un poco tarde al juego, pero aquí es lo que uso. También obligará a presentar de la forma que es el objetivo actual del cursor.
$(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();
}
});