我应该验证输入表单测试值是否 >= 0。
我使用 jQuery 获取值并使用简单的 if 语句进行验证。像这样:
var value = $('#'+this.id).val();
console.log("value is " + value );
if(value >=0 ){
console.log("true");
}else{
console.log("false");
}
当用户插入带有逗号或点的十进制数字时,会出现此问题。
如果用户插入1.234
结果是true
相反,如果插入1,234
结果是false
他们有什么区别?
我做了一个简单的小提琴来更好地解释这个情况。
http://jsfiddle.net/zzm8zno5/4/
我还验证了值的类型;我尝试将其转换为数字Number(value)
一切都没有改变
抱歉我的问题,也许是微不足道的,但我不明白为什么会发生这种情况
JavaScript 不识别逗号作为小数点分隔符。你have使用点,.
.
为此,您可以使用replace()
更改值中的逗号。您还需要使用parseFloat()
比较值,否则您将比较一个数字(0
) 到字符串 ('1.234'
)。尝试这个:
var value = parseFloat($(this).val().replace(',', '.'));
更新了小提琴
最后,注意使用 justthis
在 jQuery 对象中。由于您已经拥有对该元素的引用,因此无需构建另一个字符串选择器。如果您愿意,可以进一步缩短为this.value
Update
假如说1,234
的意思是1234
并且不用作小数分隔符,那么您需要删除,
无需更换:
var value = parseFloat($(this).val().replace(',', ''));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)