我正在使用priceFormat插件自动在输入字段上放置逗号和小数,因此当用户输入1000000时,它会将其显示为1,000,000.00。我想要做的是创建一些类型的验证,如果用户提供的值是1,000,000.00或更多,将触发。
这就是我所拥有的:
$('input#amount').priceFormat( {limit: 12} ).bind().blur( function() { if( $('#amount').val() >= 1000000){ // pop up notification });
它不会验证,因为我猜测输入值包含字符串而不是数字?
答案 0 :(得分:4)
尝试parseInt
-
if( parseInt($('#amount').val().replace(/,/g,""),10) >= 1000000){
正如Kato正确指出的那样,在将字符串传递给parseInt
之前,您还需要删除字符串中的任何逗号。
https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/parseInt
答案 1 :(得分:2)
if( parseInt($('#amount').val.replace(/[^0-9.]/g', '')) >= 1000000 ) { ... }
您可能还希望利用隐藏字段来存储实际值并对其进行验证;这样,您的格式化值不会传递到服务器(它们也可以放置其他实际上无效的字符)。
答案 2 :(得分:2)
除了将其解析为int之外,您还需要通过删除逗号将其转换回正常数字。
if(parseInt($("#amount").val().replace(/[,$]/g, ""),10)) > 1000000){
}
答案 3 :(得分:1)
我会在值{
>周围包裹parseInt
或parseFloat
if (parseInt($("#amount").val()) >= 1000000){
//validated
}
答案 4 :(得分:1)
是的,因为.val()
是一个字符串。您应该使用parseInt
答案 5 :(得分:1)
您希望将,
替换为空,然后解析它,否则它将在逗号上拆分并使用之前的值,所以其他方面它将是1
而不是{ {1}}。
所以:
1000000
答案 6 :(得分:0)
Javascript比较将与字符串和数字一起使用,例如这些虽然令人困惑但仍然有效。
"10" > 1 ==> true
"10" > 11 ==> false
"10000" > 10 ==> true
"10 000" > 10 ==> false
但是你的问题是格式化字符串中的点和逗号。解析它们,使其正确转换为数字。
if( $('#amount').val().match(/([0-9,]+)/)[0].replace(/, /g,'') > 1E6 ) {
...
这会转换字符串,例如" 10,000.00"至" 10000"并将其与1000 000相比较。