2016-06-10 2 views
0

Я отключил поле ввода, где результат («Kiekis» * «Kaina» = «Suma»), но приводит к множеству ситуаций, отображаемых более чем с двумя цифрами (например, 3 * 2,93) даже если я использовал функцию JS toFixed (2).Две цифры после запятой

$('#quantity, #price').on('keyup change', function() { 
     $('#total').val($('#quantity').val() * $('#price').val()).toFixed(2); 
    }); 

Вот весь мой код в JSFiddle: https://jsfiddle.net/w5qz5exe/

Спасибо за помощь заранее! :)

+0

Не задавайте два отдельных вопроса в одном сообщении. – Xufox

ответ

1

You прикрепляют события на входных полях до их загрузки в DOM. Итак, присоедините событие в родительском:

Также toFixed должно быть внутри val, так как любое значение, переданное в параметре функции val, устанавливается как значение этого элемента. Так что вам нужно отправить отформатированный значение в этом Funciton:

Пример:

$('div.row').on('keyup change', '#quantity, #price ', function() { 
    $('#total').val(($('#quantity').val() * $('#price').val()).toFixed(2)); 
}); 

Обновлено Fiddle - link

0

Что это значит: устанавливает значение $ ('# total') в blah, а затем в .toFixed (2) в объект jquery (as .val() возвращает $ ('# total'))

$('#total').val(blah).toFixed(2) 

Что это делает: устанавливает значение $ ('# общий') для бэ с не более 2 знаков после запятой:

$('#total').val(blah.toFixed(2)) 

Второй один является то, что вы действительно хотите

1

Вы добавляете обработчик событий «KeyUp изменения» на странице загрузки, но новый элементы, которые вы добавляете в DOM, а не на странице при загрузке страницы. Вам нужно будет добавить этот обработчик к новым элементам после они созданы.

Вы можете поместить обработчик изменения «keyup change» в функцию, а затем, когда вы добавите новые элементы, вызовите эту функцию.

+0

Ah .. googled that, но не может найти правильное решение для этого:/Можете ли вы дать простой пример? Thx – Sprunkas

+0

@Sprunkas Я расширил свой ответ, см. Выше. – AyexeM

Смежные вопросы