Comment soumettre un formulaire avec Control + Enter

Vous l'avez probablement déjà vu sur Twitter, Google+ ou Facebook. Vous avez une zone de texte dans laquelle vous écrivez votre statut / message, puis cliquez sur un bouton pour l'envoyer. Mais si vous êtes paresseux comme moi, vous n'aimez pas passer à la souris pour cliquer sur le bouton. Ces services nous aident en nous permettant d’appuyer sur contrôle + entrée soumettre. Recréons ce scénario pour nos propres projets.


Préférer la vidéo?


Bien sûr, la raison pour laquelle nous ne pouvons pas soumettre juste entrer est parce que nous allons utiliser un zone de texte, afin que l'utilisateur puisse inclure des sauts de ligne. Normalement, le navigateur ignore simplement la contrôle clé et ajouter un autre saut de ligne lorsque nous avons frappé contrôle + entrée, mais nous allons intercepter cela et effectuer notre magie.


Étape 1: le modèle

Nous ne sommes pas ici pour parler tellement de HTML et CSS, alors voici le? Template? nous commençons par:

    Zone de texte Entrée     

Étape 2: le HTML

Nous avons besoin de quelques éléments pour travailler ici, alors ajoutons-les:

   

Je simplifie vraiment ceci ici: nous n'avons qu'un zone de texte et un bouton. Si c'était la vraie affaire, nous voudrions un fonctionnaire forme ici, cela fonctionnerait et envoyer votre message sans JavaScript. Nous incluons également jQuery et une balise de script vide dont nous allons tirer profit..


Étape 3: le JavaScript

Nous allons en faire un plugin jQuery que nous appellerons ctrlEntrer. Voici ce que nous commençons avec:

$ .fn.ctrlEnter = fonction (btns, fn) var thiz = $ (this); btns = $ (btns); ;

Nous prenons deux paramètres. Nous appellerons cette fonction plugin sur le zone de texte, Nous avons donc déjà cet élément. Le premier paramètre est une chaîne d'un ou de plusieurs sélecteurs qui seront transmis à jQuery. Ce sont des éléments qui doivent avoir les mêmes fonctionnalités lorsque vous cliquez dessus. Le deuxième paramètre est la fonction qui sera exécutée lorsque contrôle + entrée est pressé. Ensuite, nous créons des variables: le jQueryified zone de texte et le jQueryified btns.

fonction performAction (e) fn.call (thiz, e); 

Ensuite, nous créons une fonction qui englobe la fonction que nous avons transmise. Nous faisons cela pour nous assurer que la fonction est appelée avec zone de texte élément comme ce dans la fonction. Nous lui passons également l'objet événement de l'événement.

thiz.bind ("keydown", fonction (e) if (e.CodeCode === 13 && e.ctrlKey) performAction (e); e.preventDefault ();); btns.bind ("click", performAction);

Ensuite, nous avons les gestionnaires d’événements réels. Le premier fil une fonction à la touche Bas événement sur le zone de texte élément. e.keyCode === 13 signifie que la touche Entrée est enfoncée. Si e.ctrlKey est vrai, cela signifie que l'utilisateur appuyait sur la touche de navigation lorsque la touche Entrée a été enfoncée. Si la touche entrée et la touche de contrôle sont toutes deux enfoncées, nous appellerons cela faire une action une fonction. Ensuite, nous appellerons e.preventDefault, ce qui empêchera la nouvelle ligne que la touche entrée écrit normalement de se produire.

Et maintenant, connectons les gestionnaires d’événements aux boutons; nous allons simplement prendre le texte, remplacer tous les occurrences de \ n avec
, mettez-le dans un paragraphe et ajoutez-le au corps:

$ ("# msg"). ctrlEnter ("bouton", function () $ (""). append (this.val (). replace (/ \ n / g, "
")). prependTo (document.body); this.val (" "););

Maintenant, testons-le:


Conclusion: la fin

Nous en ferons un pourboire rapide pour la journée. Avoir une autre méthode pour faire cela? Hit les commentaires!