Comment déclencher quelque chose lorsque le curseur est à l'intérieur de TEXTAREA et Ctrl+Enter est pressé? Utilisation de jQuery. Merci
Vous pouvez utiliser le drapeau event.ctrlKey
pour voir si le Ctrl la touche est enfoncée, quelque chose comme ceci:
$('#textareaId').keydown(function (e) {
if (e.ctrlKey && e.keyCode == 13) {
// Ctrl-Enter pressed
}
});
Vérifiez l'extrait de code ci-dessus ici .
En fait, celui-ci fait l'affaire et fonctionne dans tous les navigateurs:
if ((event.keyCode == 10 || event.keyCode == 13) && event.ctrlKey)
lien vers js fiddle
Solution universelle
Prend également en charge OS X.
if ((e.ctrlKey || e.metaKey) && (e.keyCode == 13 || e.keyCode == 10)) {
// do something
}
J'ai trouvé des réponses incomplètes ou incompatibles entre navigateurs.
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')
devrait soumettre un formulaire lorsque l'utilisateur appuie sur ctrl-enter en mettant l'accent sur la zone de texte de ce formulaire.
(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
Peut-être un peu tard pour le jeu, mais voici ce que j'utilise. Cela forcera également à soumettre le formulaire 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();
}
});
vous devez d'abord définir un drapeau lorsque Ctrl est appuyé, faites ceci onkeydown. alors vous devez vérifier la keydown de enter. désélectionner le drapeau lorsque vous voyez un keyup pour Ctrl.