Jquery 验证输入值是否为1000000.00或更大
我正在使用一个priceFormat插件,它会自动在输入字段中放置逗号和小数,因此当用户输入1000000时,它会显示为1000000.00。我想做的是创建某种类型的验证,如果用户提供的值为1000000.00或更大,则会触发该验证 这就是我所拥有的: $('input#amount').priceFormat( {limit: 12} ).bind().blur( function() { if( $('#amount').val() >= 1000000){ // pop up notification }); $('input#amount').priceFormat({limit:12}).bind().blur(function()函数){ 如果($('#amount').val()>=1000000){ //弹出式通知 });Jquery 验证输入值是否为1000000.00或更大,jquery,string,validation,numbers,Jquery,String,Validation,Numbers,我正在使用一个priceFormat插件,它会自动在输入字段中放置逗号和小数,因此当用户输入1000000时,它会显示为1000000.00。我想做的是创建某种类型的验证,如果用户提供的值为1000000.00或更大,则会触发该验证 这就是我所拥有的: $('input#amount').priceFormat( {limit: 12} ).bind().blur( function() { if( $('#amount').val() >= 1000000){
它将不会验证,因为我猜测输入值包含字符串而不是数字?请尝试
parseInt
-
if( parseInt($('#amount').val().replace(/,/g,""),10) >= 1000000){
正如Kato正确指出的,在将字符串传递给parseInt
之前,还需要删除字符串中的任何逗号
试试
parseInt
-
if( parseInt($('#amount').val().replace(/,/g,""),10) >= 1000000){
正如Kato正确指出的,在将字符串传递给parseInt
之前,还需要删除字符串中的任何逗号
我会将
parseInt
或parseFloat
环绕在值周围:
if (parseInt($("#amount").val()) >= 1000000){
//validated
}
我会将
parseInt
或parseFloat
环绕该值:
if (parseInt($("#amount").val()) >= 1000000){
//validated
}
是的,这是因为
.val()
是一个字符串。您应该使用是的,这是因为.val()
是一个字符串。您应该使用
您可能还希望使用隐藏字段来存储实际值并对其进行验证;这样,格式化的值就不会传递到服务器(它们也可能在其中放入其他实际上无效的字符)
您可能还希望使用隐藏字段来存储实际值并对其进行验证;这样您的格式化值就不会传递到服务器(它们也可能在其中放入其他实际上无效的字符).您希望将
,
替换为零,然后对其进行解析,否则它将在逗号上拆分,并使用之前的值,因此从其他方面看,它将是1
而不是1000000
因此:
您希望将
,
替换为零,然后对其进行解析,否则它将在逗号上拆分,并使用前面的值,因此从其他方面看,它将是1
而不是1000000
因此:
除了将其解析为int之外,还需要通过删除逗号将其转换回正常数字
if(parseInt($("#amount").val().replace(/[,$]/g, ""),10)) > 1000000){
}
除了将其解析为int之外,还需要通过删除逗号将其转换回正常数字
if(parseInt($("#amount").val().replace(/[,$]/g, ""),10)) > 1000000){
}
Javascript比较将使用字符串和数字,例如,它们虽然容易混淆,但仍然有效
"10" > 1 ==> true
"10" > 11 ==> false
"10000" > 10 ==> true
"10 000" > 10 ==> false
但您的问题是格式化字符串中的点和逗号。请将它们解析掉,以便正确转换为数字
if( $('#amount').val().match(/([0-9,]+)/)[0].replace(/, /g,'') > 1E6 ) {
...
这会将字符串(例如“10000.00”)转换为“10000”,并将其与1000 000进行比较。Javascript比较将使用字符串和数字,例如,这些字符串和数字虽然容易混淆,但仍然有效
"10" > 1 ==> true
"10" > 11 ==> false
"10000" > 10 ==> true
"10 000" > 10 ==> false
但您的问题是格式化字符串中的点和逗号。请将它们解析掉,以便正确转换为数字
if( $('#amount').val().match(/([0-9,]+)/)[0].replace(/, /g,'') > 1E6 ) {
...
这会将字符串(例如“10000.00”)转换为“10000”并将其与1000 000进行比较。这将只解析到第一个逗号?@Kato正则表达式上的
g
修饰符应使其删除所有逗号。@Kato-感谢您指出这一点,我已更新了答案。这将只解析到第一个逗号?@Kato正则表达式上的g
修饰符应使其删除所有逗号mmas@Kato-谢谢你指出这一点,我已经更新了答案。