web-dev-qa-db-fra.com

Disabilitare the chiave di invio per il modulo

Ho cercato di disabilitare ilEnterChiave sul mio modulo. Il codice che ho è mostrato di seguito. Pour le meilleur motif pour le goût invio sta ancora attiando l'invio. Le code de la route est le principal et essentiel pour corriger les erreurs.

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

        return (key != 13);
    },
30
Chris Pinski

si vous utilisez jQuery, c’est assez simple. Voici

$(document).keypress(
  function(event){
    if (event.which == '13') {
      event.preventDefault();
    }
});
53
Steven Jiang

La plupart des réponses sont en JQuery. Vous pouvez le faire parfaitement en Javascript pur, simple et aucune bibliothèque requise. C'est ici:

<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 car il désactive uniquement l’action de frappe «Entrée» pour le type d’entrée = 'texte'. Cela signifie que les visiteurs peuvent toujours utiliser la touche "Entrée" dans textarea et sur l'ensemble de la page Web. Ils pourront toujours envoyer le formulaire en cliquant sur le bouton "Soumettre" avec les touches "Tab" et en appuyant sur "Entrée".

Voici quelques faits saillants:

  1. Il est en javascript pur (aucune bibliothèque requise).
  2. Non seulement il vérifie la touche enfoncée, mais il confirme si la touche "Entrée" est appuyée sur l'élément de formulaire type = 'text'. (Ce qui provoque le formulaire le plus défectueux soumet
  3. Avec ce qui précède, l'utilisateur peut utiliser la touche "Entrée" n'importe où.
  4. C'est court, propre, rapide et droit au but.

Si vous souhaitez également désactiver "Entrée" pour d'autres actions, vous pouvez ajouter console.log (e); Pour vos besoins de test, appuyez sur F12 en chrome, accédez à l'onglet "Console", appuyez sur "retour arrière" sur la page et regardez à l'intérieur pour voir les valeurs renvoyées. Vous pouvez ensuite cibler tous ces paramètres pour améliorer le code ci-dessus en fonction de vos besoins pour"e.target.nodeName","e.target.type"et beaucoup d'autres ...

21
Tarik

essayez ceci ^^

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

J'espère que cela t'aides

18
Hatake Kakashi

Voici un moyen simple d'accomplir cela avec jQuery en le limitant 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 .

4
Matt Browne

Dans votre balise de formulaire, collez simplement ceci:

onkeypress="return event.keyCode != 13;"
2
YASH GAUTAMI

Cliquez ici pour en savoir plus sur ce qui est jQuery.

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

То будет ждать нажатия клавиш, если этоEnter, то ничего не сделает.

1
Jaime Rodriguez

Ajoutez simplement le code suivant dans la balise <Head> dans votre code HTML. Il soumettra le formulaire sur Entrer la clé pour tous les champs du 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
Kailas Mane

Решение очень простое:

Заменить тип "Отправить" кнопкой

<input type="button" value="Submit" onclick="this.form.submit()" />
0
Samir Patel

J'ai vérifié toutes les solutions ci-dessus, elles ne fonctionnent pas. La seule solution possible consiste à intercepter l'événement 'onkeydown' pour chaque entrée du formulaire . Vous devez associer disableAllInputs à 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
Dimon579