Подтвердите, если введенное значение составляет 1 000 000,00 или более - PullRequest
1 голос
/ 23 ноября 2011

Я использую плагин 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 ]

4 голосов
/ 23 ноября 2011

Попробуйте parseInt -

if( parseInt($('#amount').val().replace(/,/g,""),10) >= 1000000){   

Как правильно заметил Като, вам также необходимо удалить все запятые в строке перед передачей parseInt.

https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/parseInt

2 голосов
/ 23 ноября 2011

В дополнение к синтаксическому анализу как int вам нужно преобразовать его обратно в нормальное число, удалив запятые.

 if(parseInt($("#amount").val().replace(/[,$]/g, ""),10)) > 1000000){
 }
2 голосов
/ 23 ноября 2011
if( parseInt($('#amount').val.replace(/[^0-9.]/g', '')) >= 1000000 ) { ... }

Вы также можете использовать скрытое поле для хранения фактического значения и его проверки; таким образом, ваше отформатированное значение не будет доставлено на сервер (в него могут быть помещены и другие символы, которые на самом деле недопустимы).

1 голос
/ 23 ноября 2011

Вы хотите заменить , ничем, а затем проанализировать его, в противном случае он будет разделен запятой и будет использовать значения до этого, поэтому в противном случае это будет 1 вместо 1000000.

Итак:

if (parseInt($("#amount").val().replace(/,/g, "")) >= 1000000){
//validated
}
1 голос
/ 23 ноября 2011

Да, потому что .val() это строка. Вы должны использовать parseInt

1 голос
/ 23 ноября 2011

Я бы обернул parseInt или parseFloat вокруг значения:

if (parseInt($("#amount").val()) >= 1000000){
    //validated
}
0 голосов
/ 23 ноября 2011

Сравнение 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...