Empêcher la saisie de caractères invalides dans les champs : un guide complet
P粉124890778
P粉124890778 2023-08-27 21:06:52
0
2
528
<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粉124890778
P粉124890778

répondre à tous(2)
P粉034571623

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
        
    
        
    

P粉807471604

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;
    }
});
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal