2010-05-20 5 views
0

pour contrôler mon type d'entrée et vérifier que sa valeur est assez un flotteur sous ma forme que je rencontre en javascript comme ça:contrôlant une valeur flottante avec javascript

function verifierNombre() { 
var champ=document.getElementById("nperformed"); 
var str = champ.value; 
if(str.value==' '){champ.focus();} 
if (isNaN(str)) { 
alert("Invalid Valid! the field must be a number"); 
champ.focus(); 
return false; 
} 
return true; 

} 

mais toujours faux, car il n » t accepte vraiment flotte. donc lors de la saisie d'une valeur comme '11, 2 'l'alerte est déclenchée.

Je veux savoir comment puis-je contrôler les valeurs flottantes avec javascript. merci.

+1

qu'est-ce que c'est "declenched"? –

+1

Tous les nombres dans javascript sont déjà des nombres à virgule flottante de 64 bits –

+0

Invalid Valid! :-) –

Répondre

5

Je crois que le problème est peut-être qu'il ne considère pas 11,2 être un flottant valide, s'attendant à quelque chose comme 11.2. Essayez le 11.2 et voyez si cela fonctionne. Si tel est le problème, je ne suis pas sûr si une option de localisation peut être définie ou si vous devez permuter manuellement les deux avant d'exécuter isNaN.

Modifier Ah, this webpage confirme:

Dans de nombreux pays, il est pratique courante d'utiliser une décimale la virgule au lieu d'une virgule. Malheureusement, en JavaScript, vous devez utiliser le point décimal, quel que soit le paramètre de pays que vous avez dans votre système d'exploitation. En JavaScript, seuls les chiffres après une virgule décimale seront utilisés pour les calculs, ce qui produira des résultats incorrects.

+0

Je pensais juste que la virgule était une faute de frappe. –

1

11,2 n'est pas un flottant valide. Javascript like (autant que je sache) chaque langage de programmation utilise le . comme signe décimal. alors essayez plutôt 11.2.

Si vous voulez accepter la , vous pouvez le faire comme ceci:

function verifierNombre() { 
    var champ=document.getElementById("nperformed"); 
    var str = champ.value; 
    if(str.value==' ') champ.focus(); 
    if (isNaN(str.replace(',','.')) { 
    alert("Invalid Valid! the field must be a number"); 
    champ.focus(); 
    return false; 
    } 
    return true; 
} 

function localize_float(champ) { 
    champ.value = champ.value.replace(",","."); 
} 

Et dans votre formulaire vous ajoutez comme onsubmit -attribut ceci:

<form name="..." action="..." method="..." onsubmit="localize_float(document.getElementById("nperformed");)"> 
+0

Personnellement, je voudrais que localize_float prenne un paramètre et renvoie la quantité corrigée, au cas où d'autres éléments de la page doivent être corrigés. – Corey

+0

J'ai changé d'exemple – jigfox

0

11,2 n'est pas un flottant valide car le "point décimal" doit être un point (.) et non une virgule (,).

Remplacer la virgule avec un point:

var str = champ.value; 
str = str.replace(",", "."); 

En outre,

if(str.value==' '){champ.focus();} 

est pas un très bon état. Utilisez plutôt une fonction d'ajustement et comparez avec "".

Questions connexes