#jquery
#jquery
Вопрос:
Это странно, я пытаюсь выполнить простое вычисление, но по какой-то причине я не могу получить значение из входных данных, и это работает только для определенных входных данных, а не для всех.
Именно так я пытаюсь получить значение:
var Days = parseInt($('#days').val());
var DaysPayment = parseInt($('#days-payment').val());
Но это не работает, хотя другие входные данные работают нормально.
Вы можете увидеть это на JSFiddle здесь: http://jsfiddle.net/jEU4L /
Комментарии:
1. я думаю, что это может быть bcoz функции замены ur попробуйте это
replace(/r?n/g, '')
Ответ №1:
Вам необходимо извлечь значения из этих полей в обработчике кликов. На данный момент вы получаете их при загрузке, когда они пустые, следовательно, результаты вычислений NaN
. Кроме того, вы должны включать основание в parseInt
вызовы. Попробуйте это:
$(document).ready(function () {
var $execute = $('#execute');
var $total = $('#total');
var $totalNDS = $('#total-nds');
$execute.on('click', function () {
var payment = parseInt($('#payment').val().replace(/ /g, ""), 10);
var nds = parseInt($('#nds').val(), 10);
var days = parseInt($('#days').val(), 10);
var daysPayment = parseInt($('#days-payment').val(), 10);
var t1 = payment / 100;
var t2 = t1 * nds;
var t3 = payment - t2;
var t4 = t3 / days;
var t5 = t4 * daysPayment;
$total.val(t5);
});
});
Я также изменил имена переменных, чтобы использовать обычные соглашения JS и jQuery (т. е. переменные, содержащие объекты jQuery, имеют префикс a $
, а имена переменных должны быть в верблюжьем регистре).
Ответ №2:
Вам нужно изменить свою функцию :
$(document).ready(function(){
var Payment = parseInt($('#payment').val().replace(/ /g,""));
var Execute = $('#execute');
var Total = $('#total');
var TotalNDS = $('#total-nds');
Execute.on('click',function(){
var NDS = 0
var Days = 0
var DaysPayment= 0
if($('#nds') > 0)
NDS = parseInt($('#nds').val());
if($('#days') > 0)
Days = parseInt($('#days').val());
if($('#days-payment') > 0)
DaysPayment = parseInt($('#days-payment').val());
console.log(Days ' ' DaysPayment);
var t1 = Payment/100;
console.log(t1);
var t2 = t1 * NDS;
console.log(t2);
var t3 = Payment - t2;
console.log(t3);
var t4 = t3 / Days;
console.log(t4);
var t5 = t4 * DaysPayment;
console.log(t5);
Total.val(t5);
});
});
Поскольку вы не получаете значение по умолчанию в днях или днях в переменных месяца, поэтому вы получаете NaN