Bonjour à tous !

Voila je travail actuellement sur un projet et j'aimerai pour la gestion de mes formulaires mettre en place un système qui permettrai de bloquer certains caractères. Par exemple j'ai un formulaire d'inscription et j'aimerai que le champs pseudo empêche la saisi des caractères autres que les lettres et les chiffres c'est à dire tout ce qui est : (&é"' etc...). Je sais qu'on peut le faire en javascript mais je ne trouve pas du tout comment.

Merci de votre aide !

11 réponses


PhiSyX
Réponse acceptée

Hello, oui c'est surtout à cause du onkeypress qui n'efface pas automatiquement :(
Sinon tu peux t'inspirer du code au dessus (sans regex cette fois-ci) :

<script type="text/javascript">
    function verif(evt) {
        var keyCode = evt.which ? evt.which : evt.keyCode;
        var accept = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
        if (accept.indexOf(String.fromCharCode(keyCode)) >= 0) {
            return true;
        } else {
            return false;
        }
    }
</script>

Et dans ton champ de text mettre onkeypress="return verif(event);"
Voilà.. :p

http://www.editeurjavascript.com/scripts/scripts_formulaires_3_631.php

Essai le petit input de test en bas, met par exemple un point d'intérogation ou un "é", tu ne pourras pas, je pense que c'est ce que tu cherche ^^. Tu peux choisir quelles touche sont interdites

mespeche
Auteur

J'ai déjà regardé ce site, c'est en effet ce que je cherche mais je pense qu'il y a un moyen plus simple de le faire, déjà le fait de ne pas avoir à déclarer tous les caractères que l'on ne veut pas... Merci à toi quand même :)

De rien ;).

Tu peux faire en php une variable contenant tous les caractère in désiré... Et après ça simplifie le code non ? je pense que tu sois obliger de les déclarer...

mespeche
Auteur

Justement je veux le faire avant l'envoi du formulaire, donc autant empêcher la saisi en javascript.

Hello, essaye avec ceci :

<script type="text/javascript">
    function verif(chars) {
        // Caractères autorisés
        var regex = new RegExp("[a-z0-9]", "i");
        var valid;
        for (x = 0; x < chars.value.length; x++) {
            valid = regex.test(chars.value.charAt(x));
            if (valid == false) {
                chars.value = chars.value.substr(0, x) + chars.value.substr(x + 1, chars.value.length - x + 1); x--;
            }
        }
    }
</script>

Dans ton champ de text mettre onkeyup="verif(this);".
Voila :p

mespeche
Auteur

Merci PhiSyX c'est en effet ce que je recherche par contre il au lieux d'effacer le caractère une fois tapé, j'aimerai carrément qu'il ne l'affiche pas, que sa fasse comme si la touche marchait pas quoi.

Pour la touche qui marche pas c'est dans le code JS de : http://www.editeurjavascript.com/scripts/scripts\_formulaires\_3\_631.php

Enfin je suppose la dedans (^^) :

<script type="text/javascript">
// Formatage d'un champs mail
function valid_mail(evt) {
    var keyCode = evt.which ? evt.which : evt.keyCode;
    var interdit = 'àâäãçéèêëìîïòôöõùûüñ &*?!:;,\t#~"^¨%$£?²¤§%*()]{}<>|\\/`\'';
    if (interdit.indexOf(String.fromCharCode(keyCode)) >= 0) {
        return false;
    }
}
</script>
mespeche
Auteur

Bin c'est le return false qui empéche la saisie mais il ne fonctionne pas avec le script que PhiSyX m'a fourni

mespeche
Auteur

Impeccable c'est exactement ce qu'il me fallait ;) Merci beaucoup à tout le monde !

Merci beaucoup @PhiSyX, je galèrais jusqu'au moment ou je tombe sur ce post.