У меня есть поиск по всему миру на SOF, но ни одно из решений не работало для меня, мне нужна помощь при вычислении значений float из формы в javascript при нажатии клавиши.
У меня есть два поля в форме, и я хочу рассчитать значения.
<input name="Package[sms]" id="Package_sms" type="text">
<input name="Package[sms_rate]" id="Package_sms_rate" type="text">
Вот мой код javascript.
$('#Package_sms, #Package_sms_rate').keypress(function () {
var sms = parseFloat($("#Package_sms").val());
var rate = parseFloat($("#Package_sms_rate").val());
console.log(rate);
// other code
console.log(sms*rate);
});
Я пытаюсь получить значение Package_sms_rate
Когда я Package_sms_rate
значение 0.1
, консоль показывает 0.1
отлично, но когда я ввожу любое из этих значений 0.11
или 0.12
до 0.19
, оно все равно показывает 0.1
. Из-за этого он делает неправильные расчеты. Как это исправить?
sms = 50000
rate = 0.1
total = 5000
sms = 50000
rate = 0.1 // when i enter 0.12
total = 5000 // still showing 5000, it should be 6000 for rate 0.12
Вам нужно изменить событие keypress
событие keyup
, чтобы оно срабатывало после того, как значение было применено к входу:
Примечание. Я заменил ваш parseFloat()
оператором +
, он короче и гораздо более универсален.
$('#Package_sms, #Package_sms_rate').keyup(function () {
var sms = +$("#Package_sms").val();
var rate = +$("#Package_sms_rate").val();
console.log(rate);
console.log(sms*rate);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input name="Package[sms]" id="Package_sms" type="text">
<input name="Package[sms_rate]" id="Package_sms_rate" type="text">
keyup
сработало :)