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

Était-ce utile?

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
  }
});

Vérifier l'extrait ci-dessus .

Autres conseils

En fait, celui-ci fait le tour et fonctionne dans tous les navigateurs:

if ((event.keyCode == 10 || event.keyCode == 13) && event.ctrlKey)

js violon .

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 aussi metaKey .

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();
    }
});
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top