Parser une chaine en Javascript

cs_syl2 Messages postés 49 Date d'inscription lundi 19 mai 2003 Statut Membre Dernière intervention 7 juillet 2005 - 8 juil. 2003 à 21:30
cs_syl2 Messages postés 49 Date d'inscription lundi 19 mai 2003 Statut Membre Dernière intervention 7 juillet 2005 - 9 juil. 2003 à 16:14
Bonjour,

j'essaye de réaliser une fonction qui va me tester la validité de mon champs nom dans un formulaire HTML.

C'est à dire que dans ce champs, je ne veux pas de chiffre, ou pas de caractères spéciaux ({,@ ....).

Je sais à peu près comment faire mon algo :

récupérer la taille de ma chaine dans mon champs nom
boucler de 1 à la taille de ma chaine
tester le caractère courant
si c un caractère alphanumérique, continuer sinon afficher un message d'erreur.

mais je suis bloqué par le si c un caractère alphanumérique :(. L'équivalent du ereg en javascript en somme.

Merci à tous ceux qui pourront m'aider

cordialemenent

Slyv

4 réponses

cs_Dean Messages postés 500 Date d'inscription mardi 16 avril 2002 Statut Membre Dernière intervention 2 août 2004
8 juil. 2003 à 22:12
Bonjour,

Tout d'abord, je peux te dire que l'on peut procéder à une validation par regex en JavaScript. Mais ces objets ne sont inclus que dans IE me semble-t-il (du kro$oft quoi).

Sinon pour tester si une chaîne est alphanumérique il faut vérifier les codes de caractères.
Par exemple, tous les chiffres sont situés entre 0x30 et 0x39.
Pour les lettres c'est le même principe. La seule chose à faire est de se munir d'une table ASCII/Unicode (charmap de Windows fera l'affaire).

Dean - http://charloweb.ipfixe.net
0
cs_syl2 Messages postés 49 Date d'inscription lundi 19 mai 2003 Statut Membre Dernière intervention 7 juillet 2005 1
9 juil. 2003 à 12:06
Bonjour,

Merci pour ta réponse rapide, j'ai néanmoins encore un petit problème pour parvenir à réaliser le test de mon champs.

en effet, pour le moment, j'ai récupéré la taille de ma chaîne, et je fais une boucle pour tester chaque caractères un par un. Si le caractère n'est pas bon alors j'arrête la boucle et j'affiche un jolie message à l'utilisateur, sinon je passe au caractère suivant.

donc le caractère courant je le récupère ainsi :

position = document.test.Tval.valeur.charAt(i) avec i mon compteur, test le nom de mon formulaire et Tval le nom de mon champs.

et ensuite je teste en faisant si (position==0x30) sous entendu si je met un 0 dans mon champ alors tu rejète la chaine mais il ne rentre pas dans mon if :(

Voici ma fonction complète au cas où je n'ai pas été très explicite ;p

function valide(test)
{
var longueur=document.test.Tval.value.length;
var i;
for (i=0 ;i<longueur;i++)
{
var position=document.test.Tval.value.charAt(i);
alert(position);
if(position == 0x30)
alert("dans le if");
else
alert("dans le else");
}
}

Merci

Slyv
0
cs_Dean Messages postés 500 Date d'inscription mardi 16 avril 2002 Statut Membre Dernière intervention 2 août 2004
9 juil. 2003 à 15:55
C'est normal car il faut utiliser non pas charAt qui renvoie un caractère mais charCodeAt qui retourne le code ASCII.

Fais des essais avec cette méthode et si tu as un problème je regarderai cela de plus près...

Dean - http://charloweb.ipfixe.net
0
cs_syl2 Messages postés 49 Date d'inscription lundi 19 mai 2003 Statut Membre Dernière intervention 7 juillet 2005 1
9 juil. 2003 à 16:14
Kikoo,

merci beaucoup, ça marche parfaitement bien maintenant :D

j'ai plus qu'à faire ma restriction pour ma condition et ce sera nickel.

Merci mille fois

slyv
0
Rejoignez-nous