Javascript сохраняют десятичное место - PullRequest
0 голосов
/ 16 февраля 2012

Я использую следующий код ниже, чтобы получить цену от атрибута data-price, который назначается переключателям следующим образом: data-price="25.00"

jQuery(document).ready(function($){
var frm = document.forms.myForm;
frm.onchange = function(e) {
var tot = 0;
for( var i = 0, l = frm.elements.length; i < l; i++ ) {
    if( frm.elements[i].checked ) {
        tot += parseFloat( frm.elements[i].getAttribute('data-price') );
    }  
}
document.getElementById('total').value = ( tot );
}
})

Проблема, которую я получаю, заключается в том, что когда онавыводит его в поле ввода для следующего примера, он будет показывать только 25, мне нужно, чтобы он сказал 25.00, есть ли способ обойти это?

Ответы [ 3 ]

2 голосов
/ 16 февраля 2012

Попробуйте назначить tot.toFixed(2).Надеюсь, это поможет!

2 голосов
/ 16 февраля 2012
tot.toFixed(2)

даст вам результат.

И так как вы используете jQuery, вы можете написать больше кода, похожего на jQuery, просто пример, подобный приведенному ниже, просто предложение:

$(function () {
    $('form[name="myForm"]').change(function () {
        var tot = 0;
        $('input:checked', this).each(function () {
            tot += parseFloat($(this).data('price'));
        });
        $('#total').val(tot.toFixed(2));
    });
});
1 голос
/ 16 февраля 2012

Javascript не будет отображаться 25,00, если это число

console.log(25.00);
alert(25.00)

Оба покажут 25. Это работает, только если после них есть ненулевые цифры.

console.log(25.03);

Так что конвертируйте его в число для расчетов, и при отображении в текстовом поле используйте .toFixed(2), как другие предложили здесь.

document.getElementById('total').value = tot.toFixed(2);

toFixed преобразует его в строку.

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