JQuery / Javascript расщепление строки вычисления - PullRequest
1 голос
/ 27 марта 2012

Я создаю страницу продукта, которая требует обновления цены при изменении количественного значения.Используются два поля формы: .orig_price и #quantity.Эти значения, очевидно, умножаются вместе.

Я пытаюсь разделить умноженное значение, чтобы я мог напечатать правильный формат (27.7043454575 должен быть 27.70).

Мой код:

jQuery("#quantity").change(function() {

         jQuery("#pricediv").hide();

// store form values
         var origprice = jQuery(".orig_price").val().substr(1); 
         var qty = jQuery("#quantity").val();

// calculate price
         var sumValue = origprice * qty;

// split price
         var splitprice = sumValue.split("."); 
         var pricepound = splitprice[0];
         var pricepenny = splitprice[1].substring(0,2);   

// update price

         jQuery("#pricediv").html('£' + pricepound + '.' + pricepenny);
         jQuery("#pricediv").fadeIn(1500);
});

Если я удаляю разделение и использую sumValue, все работает (но формат неправильный).Сплит не работает на расчет?

Ответы [ 2 ]

4 голосов
/ 27 марта 2012

Вы хотите использовать sumValue.toFixed(2)

var sumValue = 27.7043454575;
sumValue.toFixed(2) // 27.70

.split не существует для числовых типов. Вам придется использовать sumValue.toString().split('.'), и в любом случае это будет более неудобно, чем просто придерживаться .toFixed

0 голосов
/ 27 марта 2012

Вы можете использовать toFixed и parseInt() примерно так:

jQuery("#quantity").change(function() {

         jQuery("#pricediv").hide();

// store form values
         var origprice = parseInt(jQuery(".orig_price").val().substr(1),10); 
         var qty = parseInt(jQuery("#quantity").val(),10);

// calculate price
         var sumValue = origprice * qty;

// split price
         var price = sumValue.toFixed(2);  

// update price

         jQuery("#pricediv").html('£' + price);
         jQuery("#pricediv").fadeIn(1500);
});

toFixed определяет количество точек после десятичной дроби, а parseInt вводит тип ввода в целое число (цифра 10 не нужна, но для отображения десятичной основы 10), потому что при получении данных из поля формы иногда он возвращается в виде строки и портит вашу математику.

...