验证输入值是否为1,000,000.00或更高

时间:2011-11-23 18:28:49

标签: jquery string validation numbers

我正在使用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                          

});

它不会验证,因为我猜测输入值包含字符串而不是数字?

7 个答案:

答案 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)

我会在值{

>周围包裹parseIntparseFloat

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相比较。