2010-05-20 60 views
0

浮点值来控制我的输入类型,并验证它的价值是非常在我的形式的浮动我对付它在JavaScript这样的:controling用J​​avaScript

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; 

} 

,但它仍然假的,因为它不”不接受真正的花车。 因此,当输入像'11,2'这样的值时,警报就会被解除。

我想知道如何使用javascript控制float值。 谢谢。

+1

什么是“declenched”? – 2010-05-20 16:30:06

+1

javascript中的所有数字都已经是64位浮点数 – 2010-05-20 16:31:48

+0

无效有效!? :-) – 2010-05-20 16:40:33

回答

5

我相信问题可能是它不考虑11,2是一个有效的浮点数,而是期望类似于11.2。尝试一下11.2,看看它是否有效。如果这是问题,我不确定是否有一些可以设置的本地化选项,或者如果在运行isNaN之前需要手动交换两者。

编辑啊,this webpage证实了这一点:

在许多国家,通常的做法是用逗号而不是小数点的小数。不幸的是,无论您在操作系统中使用哪种国家/地区设置,JavaScript都必须使用小数点。在JavaScript中,只有小数点后面的数字才会用于计算,这会产生不正确的结果。

+0

我只是认为逗号是一个错字。 – 2010-05-20 16:43:01

1

11,2不是有效的浮点数。 Javascript(就我所知),每种编程语言都使用.作为十进制符号。所以请尝试11.2

如果你想接受,你可以做这样的:

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(",","."); 
} 

而且在你的表格你添加onsubmit -attribute这样的:

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

就我个人而言,我会让localize_float接受一个参数,并返回更正的数量,以防页面上有其他元素需要更正。 – Corey 2010-05-20 16:42:42

+0

我改变了我的例子 – jigfox 2010-05-20 17:27:37

0

11,2不因为“小数点”必须是点(。)而不是逗号(,),所以它是有效的浮点数。

用点替换逗号:

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

此外,

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

是不是一个很好的条件。改为使用修剪功能并与“”进行比较。