1

请先参考示例链接以了解我的问题。

首先我划分一个值并将每个划分的值显示到输入文本字段中。

你可以在这里看到示例.. http://fahidmohammad.in/demo/sample/

示例链接中--total为要分期的金额,分期数为分期数。

我知道你可能在想什么……我到底需要什么,对吗?

这是该过程的第二阶段:

现在我有了拆分,我实际上需要的是,如果我从任何拆分输入中更改值,则下一个值或其余值应自动与总金额相加。

例如...

Total Amount = 9000
Number of installment = 3

Split1 = 3000
Split2 = 3000
Split3 = 3000

如果我决定更改split1 to 4000,那么剩余的拆分应该自动求和。

例如..

Split1 = 4000
Split2 = 2500 [auto sum]
Split3 = 2500 [auto sum]

数学上我知道这个过程,但我如何在 jquery 中完成这个,因为拆分的数量可能会因用户输入而异。

正确的方法是什么???

4

2 回答 2

2

这是你需要做的...

我建议首先添加元素,例如

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')

希望能帮助到你!

于 2012-05-02T00:13:35.903 回答
0

棘手的部分是弄清楚用户想要有目的地覆盖哪些拆分字段。从用户体验的角度来看,我建议拆分字段是文本并添加一个用户将明确检查的复选框。诸如“自定义值”之类的东西。如果一个人决定自定义第二个字段,它最终会看起来像这样:

split 1 =  2000   [ ] enter custom value
split 2 = [4000]  [X] enter custom value
split 3 =  2000   [ ] enter custom value

然后,您将知道 a) 拆分数量(基于分期付款输入中的值)和 b) 用户选择设置为自定义值的拆分数量。

然后数学是 TOTAL AMOUNT -(每个自定义字段加在一起)/剩余拆分字段。

于 2012-04-26T06:49:42.667 回答