Alors, je sais que mon problème est vieux comme le monde et j'ai d'ailleurs vu plein de discussions relatives à mon souci sur le net.
Je vais pourtant me risquer à poser mon problème ici, étant donné que je ne m'y connait pas trop en JS:
J'ai copié sur un site, le script d'une fonction JS permettant de vérifier qu'une valeur saisie dans un formulaire est un entier positif. Elle marche (affiche un message d'erreur grâce à un alert()) si on entre un nombre négatif (-1 par exemple ) mais n'affiche pas le message si on entre un caractère comme a, $,k...
J'ai alors modifié le script de la fonction JS afin qu'elle affiche le message d'erreur si on entre un caractère autre qu'un nombre :
var chKZ = 1;
for(i=0;i<document.forms['formulaire_de_vente'].elements['prix'].value.length;i++){
if(document.forms['formulaire_de_vente'].elements['prix'].value.charAt(i)<"0"|| is_nan(document.forms['formulaire_de_vente'].elements['prix'].value.charAt(i)){
chKZ = -1;
if(chKZ == -1){
alert("Cette valeur n'est pas valide!");
document.forms['formulaire_de_vente'].elements['prix'].style.backgroundColor ="#fba";
return false;
La ligne du isNan (celle que j'ai ajouté) semble n'être pas prise en compte...
Merci d'avance pour votre aide!
You are now about to witness the strength of street knowledge
Sauf que pour la valeur "-5", pour le 1er caractère "-", testNumber("-") va tester si "-"<0. Or, dans la table ASCII, ce caractère est un nombre positif (45 pour être précis). Ainsi testNumber() retournera toujours vrai. Il faudrait donc tester le caractère entre 48 et 57 !
Sinon, pour faire ça proprement, il existe les regex ! [0-9]*
Initialement, l'idée qui m'était venu à l'esprit est de convertir le string en int. Dans la majorité des langages, lorsque la valeur est incorrecte, cela lève une erreur (ou retournerait NaN en JavaScript). Parce que je ne maîtrise pas JavaScript, je ne sais pas si cela se fait nativement.
Angular 2 est l'avenir, jQuery c'est de la merde !!! - Java 8 c'est l'an 2016+ (programmez en 1 ligne)
plus haut une boucle for sur les caractères était utilisée : donc la fonction est appelée sur le caractère "-"
dans ton exemple bryan33000 tu appelles la fonction sur la valeur complète : donc la fonction appelée sur la chaîne "-42" retournera bien false par "-42"<0 vaut bien true
Après second test sur les caractères :
le test <0 retourne toujours false, que ce soit un nombre ou le signe"-"
mea culpa : je n'avais pas testé ce point précis : isNaN('-') retourne bien true
Bref :
Pour la fonction de bryan33000 qui teste la valeur complète, il faut effectivement faire les 2 tests.
Pour la fonction initiale testant chacun des caractères, le test de négation ne sert à rien.
Angular 2 est l'avenir, jQuery c'est de la merde !!! - Java 8 c'est l'an 2016+ (programmez en 1 ligne)
Vérification formulaire :Valeur entière positive
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.