Maison  >  Questions et réponses  >  le corps du texte

Empêcher la saisie de caractères invalides dans les champs : un guide complet

<p><code>Onkeydown</code>, j'exécute le JavaScript suivant : </p> <pre class="brush:php;toolbar:false;">fonction ThisOnKeyDown(el) { if (el.title == 'textonly') { !(/^[A-Za-zÑñ-s]*$/i).test(el.value) ? el.value = el.value.replace(/[^A-Za-zÑñ-s]/ig, '') : nul; } if (el.title == 'numbersonly') { !(/^[0-9]*$/i).test(el.value) ? el.value = el.value.replace(/[^0-9]/ig, '') : null; } if (el.title == 'textandnumbers') { !(/^[A-Za-zÑñ0-9-s]*$/i).test(el.value) ? el.value = el.value.replace(/[^A-Za-zÑñ0-9-s ]/ig, '') : nul; } }</pré> <p>L'un de ces trois attributs de titre est attribué à chaque champ de saisie de la page. Le code fonctionne tant que les caractères invalides sont correctement supprimés, mais pas tant que le caractère suivant n'est pas saisi. J'aimerais trouver un moyen de rejeter simplement les entrées invalides. Merci pour votre aide! </p> <p><strong>Modifier</strong> : je crée des événements à l'échelle mondiale. Voici ce que j'ai fait : </p> <pre class="brush:php;toolbar:false;">function Globalisation() { var inputs = document.getElementsByTagName('input'); pour (i = 0; i < inputs.length; i++) { entrées[i].onfocus = createEventHandler( ThisOnFocus, entrées[i]); entrées[i].onblur = createEventHandler( ThisOnBlur, entrées[i]); entrées[i].onkeydown = createEventHandler( ThisOnKeyDown, entrées[i]); entrées[i].onkeyup = createEventHandler( ThisOnKeyUp, entrées[i]); } }</pré> <p><code>globalization()</code>run<code>body.onload</code></p> <p>Ainsi, un champ de saisie typique contient du HTML et aucun appel de fonction comme celui-ci : </p> <pre class="brush:php;toolbar:false;"><input id="AppFirstName" style="width: 150px; type="text" maxlength="30" title="textonly"/> ;</pré> <p><br /></p>
P粉124890778P粉124890778443 Il y a quelques jours501

répondre à tous(2)je répondrai

  • P粉034571623

    P粉0345716232023-08-28 14:43:57

    Le code ci-dessus illustre cela : seuls les chiffres sont autorisés. Vous pouvez le modifier en ajoutant une exception, par exemple BACKSPACE comme ceci

    
        
            
            
            sssccc
            
        
            
        
    
    

    répondre
    0
  • P粉807471604

    P粉8074716042023-08-28 10:06:49

    Pour éviter qu'il soit défini en premier lieu, vous pouvez renvoyer false sur le gestionnaire d'événement keydown, empêchant ainsi l'événement de se propager davantage.

    J'ai écrit l'exemple ci-dessous en utilisant jQuery, mais vous pouvez utiliser la même fonction avec une liaison traditionnelle.

    Bien que la validation côté serveur soit également importante, la validation côté client est également importante pour la convivialité.

    $("input.number-only").bind({
        keydown: function(e) {
            if (e.shiftKey === true ) {
                if (e.which == 9) {
                    return true;
                }
                return false;
            }
            if (e.which > 57) {
                return false;
            }
            if (e.which==32) {
                return false;
            }
            return true;
        }
    });

    répondre
    0
  • Annulerrépondre