[JS] Autoriser que des lettres et des chiffre

Master -  
[Dal] Messages postés 6205 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour (:

Je suis en train de faire un site d'upload, et je sèche, je sais à peine utiliser les regex donc ce que j'ai fais avec ne marchais pas, j'ai donc fais mon petit truc pour enlever les espaces, et ça marche, pour le moment comme vous pouvez le voir ce code interdit les espaces et les + mais j'ai pas envie de recopier html code par html code pour chaque caractère ...

<input type="text" id="nickname" name="nickname" maxlength="20" size="30" placeholder="Type your nickname here"  onKeypress="if (event.keyCode == 32, 43) event.returnValue = false; if (event.which == 32) return false;  if (event.which == 43) return false;" />


Donc ce code marche, (oui il a des jambes) mais il faudrais recopier une liste interminable pour que ça laisse marquer que des lettres majuscules, minuscules, et des chiffres.

Donc voila, je pense que pour certains ce que je veux faire est assez confus, donc ce que je voudrais c'est:

- Autoriser (si possible avec le même script) les A-Z et a-z et les 0-9.
- Que ça reste en une ligne dans le code, et que ça reste dans mon input (c'est pour includer)

PS:
- Mon code dois s'includer.
- le code affiché (<input type [...] return false;" />) est dans une variable.
- Oui mon site est en anglais (:


Merci beaucoup au personnes qui pourront m'aider.
A voir également:

1 réponse

[Dal] Messages postés 6205 Date d'inscription   Statut Contributeur Dernière intervention   1 105
 
Salut Master,

Je ne sais pas ce que tu veux dire par "s'includer".

Mais une vérification peut être faite comme cela :

onBlur="if ( !document.getElementById('nickname').value.match(/^[0-9A-Z]{2,}$/i) ) { alert('NOK'); }"

A ajouter avant ton /> terminant ta balise input.

OnBlur est déclenchée lorsque la input perd le focus (l'utilisateur clique ailleurs, par exemple).

Outre tes critères, la regex exige que la chaîne ait au moins deux caractères (ce qui semble un minimum pour un surnom). Si tu ne veux pas cette condition, remplace "{2,}" par "+" qui exigera qu'il y ait un caractère ou d'avantage, ou par ce que tu veux.


Dal
1
Master
 
Merci beaucoup, ça marche, mais il-y à pas un moyen de le faire en javascript en utilisant le script que j'ai fais, car ça en-pèche la personne de cliquer, par contre si il désactive javascript, bah enfin, je me débrouillerais, mais, est-ce que la regex je peut la mettre dans mon script si oui comment ?

merci
0
[Dal] Messages postés 6205 Date d'inscription   Statut Contributeur Dernière intervention   1 105
 
Salut Master,

Si javascript est désactivé, le formulaire va envoyer ce qui est saisi. De toutes façons le javascript n'est là que pour accélérer la réponse à l'utilisateur, le serveur recevant les données doit de toutes façons les revérifier et renvoyer une erreur si nécessaire. Si tu ne le fais pas, quelqu'un de mal intentionné pourrait envoyer n'importe quoi à ton serveur et potentiellement mettre en danger sa sécurité.

Si tu veux mettre "if ( !document.getElementById('nickname').value.match(/^[0-9A-Z]{2,}$/i) ) { alert('NOK'); }" dans un "script" séparé du code html, fait le. Tu crées une fonction de vérification dans ton script et tu mets cela dedans.

function form_verifications()
{
  if ( !document.getElementById('nickname').value.match(/^[0-9A-Z]{2,}$/i) ) 
  { 
    alert('NOK'); 
    return false;
  }
}

Si tu as plus d'un input à vérifier, tu pourras y faire toutes tes vérifications et les déclencher lorsque le bouton OK de ton formulaire est pressé, avec un événement "onsubmit" sur ta balise "form" :

<form name="myform" action="mypage.php" onsubmit="return form_verifications()"
method="post" >

A toi de gérer comment tu veux faire, adaptes et fais le "return false" lorsque toutes tes vérifications sont faites et que tu as informé l'utilisateur de tous les problèmes rencontrés sur sa saisie, etc.

Ais-je bien compris ce que tu voulais dire ?


Dal
0
Master
 
J'ai essayer sur le input seul et ça marche pas.

 «Si tu ne le fais pas, quelqu'un de mal intentionné pourrait envoyer n'importe quoi à ton serveur et potentiellement mettre en danger sa sécurité.»


Je passe par la fonction htmlentities.

 $namevar = htmlentities($nickname)."_".$code_aleatoire; 


Mais même si je ne le ferrais pas ce code sert juste à donner le nom d'une image. Le nom sert juste de "plus" sur l'image. C'est pour ça que je veux absolument qu'il reste dans mon input comme le code que je vous ais montré, c'est aussi pourquoi je veut juste des lettres et chiffres.

Master.
0
[Dal] Messages postés 6205 Date d'inscription   Statut Contributeur Dernière intervention   1 105
 
Salut,

J'ai essayer sur le input seul et ça marche pas.

Qu'as-tu essayé et qu'est-ce qui ne "marche pas" ?

Pour déboguer du Javascript, c'est bien de consulter les messages d'erreur sur la console.


Dal
0
Master
 
Comme tu ma dit, mais ça fonctionne pas, je peut mettre les &é"'(-è_ç ? !:;,§/?. etc ... et ya pas NOK qui s'ouvre ... :/
0