Ctrl + Entrée jQuery dans TEXTAREA
-
18-09-2019 - |
Question
Comment puis-je déclencher quelque chose lorsque le curseur se trouve dans textarea et Ctrl + Entrée est pressé? En utilisant jQuery . Merci
La solution
Vous pouvez utiliser le event.ctrlKey
drapeau pour voir si le Ctrl clé est pressé, quelque chose comme ceci:
$('#textareaId').keydown(function (e) {
if (e.ctrlKey && e.keyCode == 13) {
// Ctrl-Enter pressed
}
});
Autres conseils
En fait, celui-ci fait le tour et fonctionne dans tous les navigateurs:
if ((event.keyCode == 10 || event.keyCode == 13) && event.ctrlKey)
Notes:
- Dans Chrome sous Windows et Linux, entrez serait enregistré comme
keyCode
10, pas 13 ( rapport de bogue ). Nous devons donc vérifier non plus. -
ctrlKey
est contrôle sous Windows, Linux et Mac OS (non commande ). Voir aussimetaKey
.
Solution universelle
Prise en charge OS X aussi bien, qui est, à la fois contrôle + entrez et commande + entrez devrait fonctionner .
if ((e.ctrlKey || e.metaKey) && (e.keyCode == 13 || e.keyCode == 10)) {
// do something
}
J'ai trouvé des réponses des autres incomplètes ou non cross-browser compatible.
Ce code fonctionne Google Chrome.
$(function ()
{
$(document).on("keydown", "#textareaId", function(e)
{
if ((e.keyCode == 10 || e.keyCode == 13) && e.ctrlKey)
{
alert('ctrl+enter');
}
});
});
Cela peut être étendu à un plugin JQuery simple mais flexible comme dans:
$.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);
}
})
})
}
Ainsi
$('textarea').enterKey(function() {$(this).closest('form').submit(); }, 'ctrl')
doit soumettre un formulaire lorsque l'utilisateur appuie sur Ctrl-Entrée en mettant l'accent sur le textarea de cette forme.
(Merci à 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
vous devez d'abord définir un indicateur lorsque Ctrl est pressé, faire onkeydown. alors vous devez vérifier la keydown d'entrer. désinitialiser le drapeau quand vous voyez un keyup pour Ctrl .
Peut-être un peu tard pour le jeu, mais voici ce que je l'utilise. Il forcera également soumettre la forme qui est la cible actuelle du curseur.
$(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();
}
});