Désactivation de la touche Entrée pour le formulaire

j'ai essayé de désactiver la touche entrer sur mon formulaire. Le code que j'ai est montré ci-dessous. Pour une raison quelconque, la clé enter déclenche toujours le fichier submit. Le code est dans ma section de tête et semble être correct d'autres sources.

disableEnterKey: function disableEnterKey(e){
        var key;      
        if(window.event)
            key = window.event.keyCode; //IE
        else
            key = e.which; //firefox      

        return (key != 13);
    },
23
demandé sur BangEqualsDestructor 2011-04-12 06:39:12

10 réponses

si vous utilisez jQuery, c'est assez simple. Et voilà

$(document).keypress(
  function(event){
    if (event.which == '13') {
      event.preventDefault();
    }
});
46
répondu Steven Jiang 2018-09-14 09:28:01

essayez ceci ^ ^

$(document).ready(function() {
        $("form").bind("keypress", function(e) {
            if (e.keyCode == 13) {
                return false;
            }
        });
    });

Espérons que cette aide

18
répondu Hatake Kakashi 2011-04-12 02:43:04

la Plupart des réponses sont en jquery. Vous pouvez le faire parfaitement en Javascript pur, simple et sans Bibliothèque requise. Le voici:

<script type="text/javascript">
window.addEventListener('keydown',function(e){if(e.keyIdentifier=='U+000A'||e.keyIdentifier=='Enter'||e.keyCode==13){if(e.target.nodeName=='INPUT'&&e.target.type=='text'){e.preventDefault();return false;}}},true);
</script>

ce code fonctionne très bien parce que, il désactive seulement l'action de pression" Enter " pour le type d'entrée='text'. Cela signifie que les visiteurs sont toujours en mesure d'utiliser la touche "entrée" dans textarea et à travers toute la page web. Ils pourront toujours soumettre le formulaire en allant sur le bouton "Soumettre" avec les touches "Tab" et en appuyant sur "Entrer".

voici quelques faits saillants:

  1. C'est dans le plus pur javascript (pas de bibliothèque nécessaires).
  2. non seulement il vérifie la touche pressée, il confirme si le" Enter " est appuyé sur l'élément Type='text' form. (Qui cause la forme la plus défectueuse soumet
  3. avec ce qui précède, l'utilisateur peut utiliser la touche" Enter " n'importe où ailleurs.
  4. C'est court, rapide, propre et droit au but.

si vous voulez désactiver" Enter " pour d'autres actions aussi, vous pouvez ajouter console.log (e); pour vos besoins de test, et appuyez sur F12 dans chrome, allez dans l'onglet "console" et appuyez sur "backspace" sur la page et regardez à l'intérieur pour voir quelles valeurs sont retournées, puis vous pouvez cibler tous ces paramètres pour améliorer le code ci-dessus pour répondre à vos besoins pour "E. cible.nodeName" , " E. cible.tapez" et beaucoup plus...

18
répondu Tarik 2016-05-15 18:16:52

voici un moyen simple d'accomplir ceci avec jQuery qui le limite aux éléments d'entrée appropriés:

//prevent submission of forms when pressing Enter key in a text input
$(document).on('keypress', ':input:not(textarea):not([type=submit])', function (e) {
    if (e.which == 13) e.preventDefault();
});

merci à cette réponse: https://stackoverflow.com/a/1977126/560114 .

3
répondu Matt Browne 2017-05-23 10:30:46

vous pouvez essayer quelque chose comme ceci, si vous utilisez jQuery.

$("form").bind("keydown", function(e) {
   if (e.keyCode === 13) return false;
 });

qui attendra un keydown, s'il est entrer , il ne fera rien.

1
répondu Jaime Rodriguez 2012-02-20 08:41:14

il suffit d'ajouter le code suivant dans la balise <Head> dans votre code HTML. Il formera la soumission sur Entrer la clé pour tous les champs sur le formulaire.

<script type="text/javascript">
    function stopEnterKey(evt) {
        var evt = (evt) ? evt : ((event) ? event : null);
        var node = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
        if ((evt.keyCode == 13) && (node.type == "text")) { return false; }
    }
    document.onkeypress = stopEnterKey;
</script>
1
répondu Kailas Mane 2013-05-27 12:01:19

dans votre étiquette de formulaire, collez ceci:

onkeypress="return event.keyCode != 13;"
1
répondu YASH GAUTAMI 2018-08-27 15:17:31

j'ai vérifié toutes les solutions ci-dessus, elles ne fonctionnent pas. La seule solution possible est de saisir l'événement "onkeydown" pour chaque entrée du formulaire. Vous devez attacher disablinputs à onload de la page ou via jquery ready ()

/*
 * Prevents default behavior of pushing enter button. This method doesn't work,
 * if bind it to the 'onkeydown' of the document|form, or to the 'onkeypress' of
 * the input. So method should be attached directly to the input 'onkeydown'
 */
function preventEnterKey(e) {
    // W3C (Chrome|FF) || IE
    e = e || window.event;
    var keycode = e.which || e.keyCode;
    if (keycode == 13) { // Key code of enter button
        // Cancel default action
        if (e.preventDefault) { // W3C
            e.preventDefault();
        } else { // IE
            e.returnValue = false;
        }
        // Cancel visible action
        if (e.stopPropagation) { // W3C
            e.stopPropagation();
        } else { // IE
            e.cancelBubble = true;
        }
        // We don't need anything else
        return false;
    }
}
/* Disable enter key for all inputs of the document */
function disableAllInputs() {
    try {
        var els = document.getElementsByTagName('input');
        if (els) {
            for ( var i = 0; i < els.length; i++) {
                els[i].onkeydown = preventEnterKey;
            }
        }
    } catch (e) {
    }
}
0
répondu Dimon579 2014-01-07 16:51:01

pour une solution non-javascript, essayez de mettre un <button disabled>Submit</button> dans votre formulaire, positionné avant tout autre bouton de soumission/entrée. Je suggère immédiatement après l'étiquette d'ouverture <form> (et en utilisant CSS pour le cacher, accesskey='-1' pour le sortir de la séquence d'onglets, etc)

AFAICT, les agents utilisateurs cherchent le premier bouton Soumettre quand entrer est frappé dans une entrée, et si ce bouton est désactivé sera alors cesser de chercher pour une autre.

un bouton par défaut d'un élément de formulaire est le premier bouton Soumettre dans l'ordre d'arbre dont le propriétaire de formulaire est cet élément de formulaire.

si l'agent utilisateur accepte de laisser l'utilisateur soumettre un formulaire implicitement (par exemple, sur certaines plateformes en appuyant sur la touche" Entrée " alors qu'un champ de texte est focalisé implicitement soumet le formulaire), alors le faire pour un formulaire dont le bouton par défaut a un comportement d'activation défini doit faire tourner l'agent utilisateur les étapes d'activation de clic synthétique sur ce bouton par défaut.

par conséquent, si le bouton par défaut est désactivé, le formulaire n'est pas soumis lorsqu'une telle soumission implicite mécanisme est utilisé. (Un bouton n'a pas de comportement d'activation lorsqu'il est désactivé.)

https://www.w3.org/TR/html5/forms.html#implicit-submission

cependant, je sais que Safari 10 MacOS mauvais comportement ici, soumettre le formulaire même si le bouton par défaut est désactivé.

donc, si vous pouvez supposer javascript, insérez <button onclick="return false;" >Submit</button> a la place. Sur entrez , le handler onclick sera appelé, et puisqu'il retourne false le processus de soumission s'arrête. Les navigateurs avec lesquels je l'ai testé ne feront même pas la validation du navigateur (focalisation du premier contrôle de formulaire non valide, affichage d'une erreur message, etc.).

0
répondu Erics 2017-03-15 10:11:51

La meilleure façon que j'ai trouvée ici:

"151950920 de Rêve".Dans.Code

action="javascript: void(0)" ou action="return false;" (ne fonctionne pas sur moi)

-1
répondu Дмитрий Айнутдинов 2018-07-22 15:14:40