Problème de isNaN...

Crazyx Messages postés 128 Date d'inscription vendredi 4 avril 2003 Statut Membre Dernière intervention 15 octobre 2008 - 19 août 2005 à 11:55
Crazyx Messages postés 128 Date d'inscription vendredi 4 avril 2003 Statut Membre Dernière intervention 15 octobre 2008 - 22 août 2005 à 12:15
Bonjour a tous ...
quelqu'un pourrait t'il m'expliquer pk par ex 7E est considéré comme un Nombre?
Voila en fait j'avais pas trouvé comment limiter les caracteres entrée dans un champs de texte par l'utilisateur a que des chiffres. donc apres qq bidouillage, rien de glorieux , je croyais m'en sortir avec ca (vous moquez pas je débute ) :
_root.nfacture.onChanged = function() {
len = nfacture.text;
len2 = length(len) - 1;
if (isNaN(nfacture.text)) {
nfacture.text = len.substring(0,len2);
}
}

la ca m'a permis d'eviter l'ecriture de tous ce qui n'etait pas chiffre... Premier coup de geule le . passe (le caractere point). alors je me lance dans une "acrobatie" encore (riez riez :p moi jdébute et je tente de me démerdez )
j'ai ajouté ca au code ...
len3 = len.substring(len2);
else if (len3 == ".") {
nfacture.text = len.substring(0,len2);
}
};

et miracle ca a marché ... donc apres je me suis dit que j'irais voir plus tard si y'a pas plus simple ou mieux construit ... et Bam deuxieme coup de guele , le E ou e passe !!!
en fait j'ai cru que c'etait mon ptit code a 20 centimes qui déconnait , mais voila que quand je fais :
trace(!isNaN(len));
et que len = nfacture.text (qui est egale a 7E par exemple)
ca me repond : true ! 7e est un nombre ...

Si quelqu'un pouvait m'expliquer pk seul le e passe et 7a par exemple , parce que je sens que je vais finir par fracasser ce pc et me mettre a tout faire a la main .
Merci d'avance pour vos réponses.

cx

5 réponses

Crazyx Messages postés 128 Date d'inscription vendredi 4 avril 2003 Statut Membre Dernière intervention 15 octobre 2008
19 août 2005 à 12:21
Bon je pense avoir compris avec m'etre retrouvé avec un 2E+ et 2E-
je crois que le e est interprété comme exponentielle ...
Pas marrant du tout , puisque la je me demande combien d'autre caractères comme ca peuvent etre accepté au nom de je ne sais quoi... genre Pi ...
Si quelqu'un pouvait m'en dresser une liste, ca me dépannerait vraiment je les excluerai comme j'ai fait pour le point ...
Merci d'avance
0
Crazyx Messages postés 128 Date d'inscription vendredi 4 avril 2003 Statut Membre Dernière intervention 15 octobre 2008
19 août 2005 à 12:27
Je reformule ma demande parce que c'est pire que ce que je croyais .
Y'aurait t'il une méthode meilleur (et c'est sur qu'il y'en a une) qui me permetterait d'arriver a ma fin (c a dire un champ de texte ou seul les chiffres sont acceptés) et qui n'est pas aussi inéfficace que la mienne .. en fait la mienne marche un peu on va dire, car les caracteres sont pas affiché et tout ... mais il suffit de marquer dans le champ par exemple 777 et puis de revenir au début et de marquer genre A et le champ de non seulement accepte le caractere mais efface en plus efface le dernier pour me donner A77 au lieu de A777 (normal j'ai fait le substring sur la fin, en considerant que le gars ecrit de gauche a droite . le pire c que j'ai bien mon ISNAN sur true , mais il efface le movais caractere et je vois meme pas comment c possible de voir ou a été ecrit le caractére en question (début ou fin) ou meme comment extraire le A de A777 par ex pour le supprimer.

Merci d'avance pour vos réponses
0
Crazyx Messages postés 128 Date d'inscription vendredi 4 avril 2003 Statut Membre Dernière intervention 15 octobre 2008
19 août 2005 à 12:39
J'ai modifié le code pour palier au prob du mec qui revient au début apres avoir ecrit par ex 767 et qui met A :
_root.nfacture.onChanged = function() {
len = nfacture.text;
len2 = length(len);
len3 = len2 - 1;
len4 = len.substring(len3);
if (isNaN(nfacture.text)) {
trt = len.substring(0,len3); // je prend a partir du 1er caractere et j'ote le dernier
trt2 = len.substring(1,len2); // le contraire j'ote le premier et prend jusqo dernier
if (isNaN(trt)) { // et je vérifie lequel est un nombre ;..
nfacture.text = trt2;
} else {
nfacture.text = trt;
} } else if (len4 "." || len4 "e" || len4 == "E") {
nfacture.text = len.substring(0,len3);
}
};
Et la
D'une part fo que je modifie mon elseif pou rtenir compte de la position
de 2 les test sont inéfficace il accepte le . le e etc ...
de 3 et ben si le mec se met a ecrire au milieu du genre de 2076 il met un A entre 20et 76 et ben c affiché et ca tronque la fin du truc ...
Je sais plus quoi faire aidez moi :(

cx
0
Crazyx Messages postés 128 Date d'inscription vendredi 4 avril 2003 Statut Membre Dernière intervention 15 octobre 2008
19 août 2005 à 12:46
J'ai pensé comparer l'ancienne saisie : genre au stade de 00 à la nouvelle par ex 001 et de me debrouiller pr les conditions et puis si ca respecte pas il revient au premier stade 00 . Mais je n'ai aucune idée sur comment assigner une variable qui aurait comme valeur l'etat de la saisie précédente ... voila donc une autre question ...

Merci d'avance

cx
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Crazyx Messages postés 128 Date d'inscription vendredi 4 avril 2003 Statut Membre Dernière intervention 15 octobre 2008
22 août 2005 à 12:15
Personne ? :(

cx
0
Rejoignez-nous