这是你需要做的...
我建议首先添加元素,例如
var numInst = $('input[name="ni"]').val();
var total = $('input[name="ta"]').val();
var payment = total / numInst;
for(var i = 0; i < total; i++){
$('<input/>').attr({
'type' : 'text',
'name' : 'sum[]'
}).val(payment).addClass('installment').appendTo('#inner');
}
我是徒手写的,所以给出或接受一些错误......但这是一种更有效的方法,而不是将字符串附加为 html。
对于您的分期付款 onchange 事件:
$('.installment').change(function(){
var numInst = $('input[name="ni"]').val();
var total = $('input[name="ta"]').val();
var otherPayment = (total - $(this).val()) / (numInst - 1);
$(this).addClass('dontChange');
$.each($('.installment'),function(i, val){
if(!($(this).hasClass('dontChange')){
$(this).val(otherPayment);
}
});
$(this).removeClass('dontChange');
});
就像我说的,我徒手完成了这一切,但我认为逻辑是可靠的。只需将一个类添加到临时手动更改的类,然后循环通过分期付款类文本框并将值更改为等于总数,减去手动输入的值,除以 1 减去 ni 等于的付款。
我可以预见的唯一问题是,如果不为那些手动更改的框设置标志,如果用户更改另一个分期付款框,任何更改都将被覆盖。
简单的解决方法是移动 $(this).removeClass('dontChange'); 从分期付款 onchange 函数到您的 ni 和 ta onchange 处理程序末尾的行。只需将 $(this) 更改为 $('.installment')
希望能帮助到你!