Jquery не срабатывает, если оператор для определенных значений

0

У меня есть эта очень простая функция, которая дает неверные значения для определенного ввода, и я не вижу, где это происходит.

Если для параметра фотосъемки установлено значение от 20 до 59, оператор if не запускается. Значения 60 и выше и 19 и ниже работают правильно.

Пример:

o_priceperphoto = 0,50

o_photocount = 30

o_maxphotoprice = 11

o_photoprice = 15 (и должно быть 11)

Понятия не имею почему. Надеюсь, кто-то видит, что идет не так.

function photoprice(o){
  var priceperphoto = $('#o_priceperphoto').val();
  var photocount = $('#o_photocount').val();
  var maxphotoprice = $('#o_maxphotoprice').val();
  var photoprice = parseFloat(priceperphoto * photocount).toFixed(2);

  // 20 - 59 errors
  if(photoprice > maxphotoprice){
    $('#o_photoprice').val(maxphotoprice);
  }

};
Теги:

2 ответа

0

Вы сравниваете значения float и string

Typecast parseFloat(photoprice) и parseFloat(maxphotoprice)

function photoprice(o){
      var priceperphoto = $('#o_priceperphoto').val();
      var photocount = $('#o_photocount').val();
      var maxphotoprice = $('#o_maxphotoprice').val();
      var photoprice = parseFloat(priceperphoto * photocount).toFixed(2);

      // 20 - 59 errors
      if(parseFloat(photoprice) > parseFloat(maxphotoprice)){//need to typecast to float
        $('#o_photoprice').val(maxphotoprice);
      }

    };

вы сравниваете значения float и string

  • 1
    Решение pareFloat работает отлично!
0

Попробуй это

if(parseFloat(photoprice) > parseFloat(maxphotoprice)){
  $('#o_photoprice').val(maxphotoprice);
}
  • 0
    я думаю использовать parseFloat вместо parseInt
  • 0
    @Somnath Вы правы, я пропустил значение o_priceperphoto .

Ещё вопросы

Сообщество Overcoder
Наверх
Меню