Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery中的自动除法和求和值_Jquery_Math - Fatal编程技术网

Jquery中的自动除法和求和值

Jquery中的自动除法和求和值,jquery,math,Jquery,Math,请先参考示例链接了解我的问题。 首先,im将一个值分割,并将每个分割后的值显示在输入文本字段中 你可以在这里看到样品 在示例链接中--总数是要分割的金额,分期付款的数量是分割的数量 我知道你在想什么…我到底需要什么,对吗 接下来是流程的第二阶段: 现在我有了拆分,实际上我需要的是,如果我从任何拆分的输入中更改值,下一个值或剩余值应该与总量自动求和 例如 如果我决定将split1更改为4000,则剩余的拆分应自动求和 例如 从数学上讲,我知道这个过程,但我如何在jquery中实现这一点,因为拆分的

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

首先,im将一个值分割,并将每个分割后的值显示在输入文本字段中

你可以在这里看到样品

在示例链接中--总数是要分割的金额,分期付款的数量是分割的数量

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

接下来是流程的第二阶段:

现在我有了拆分,实际上我需要的是,如果我从任何拆分的输入中更改值,下一个值或剩余值应该与总量自动求和

例如

如果我决定将
split1更改为4000
,则剩余的拆分应自动求和

例如

从数学上讲,我知道这个过程,但我如何在jquery中实现这一点,因为拆分的数量可能会随着用户输入的不同而变化


正确的方法是什么?

棘手的部分是找出用户想要有目的地跳过哪些分割字段。从用户体验的角度来看,我建议拆分字段为文本,并添加一个用户将显式检查的复选框。类似“自定义值”的东西。如果有人决定自定义第二个字段,结果会是这样:

split 1 =  2000   [ ] enter custom value
split 2 = [4000]  [X] enter custom value
split 3 =  2000   [ ] enter custom value
然后,您将知道a)分割数(基于分期付款输入中的值)和b)用户选择设置为自定义值的分割数


然后计算总金额-(每个自定义字段相加)/剩余拆分字段。

以下是您需要做的事情

我建议首先添加如下元素

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');
}
就像我说的,我自由地处理了所有这些,但我认为逻辑是可靠的。只需将一个类添加到临时手动更改的类中,然后在分期付款类文本框中循环,将值更改为等于总额减去手动输入的值,再除以1减去ni等于的付款

我可能预见到的唯一问题是,如果用户不为手动更改的框设置标志,那么如果用户更改另一个分期付款框,任何更改都将被覆盖

简单的解决方法是移动$(this.removeClass('dontChange');从Installation onchange函数到ni和ta onchange处理程序末尾的行。只需将$(this)更改为$(“.分期付款”)


希望有帮助

你让我更加困惑。。。这没有帮助;(好的,我可以放置一个标识符来确定哪个字段正在被编辑。这并不能解决这里的问题。我需要重新计算动态生成的输入字段。这是我最不知道的部分。你需要通过一个事件触发重新计算。必须有什么东西触发它。取决于你哪个事件会触发它。可能是keydown、更改、模糊或单击“重新计算”按钮。触发重新计算不是这里的问题。这是我如何将剩余金额共享到活动拆分中的问题。您知道总额(a=总额)。您知道其中有多少是由用户设置的(b=标记为“输入自定义值”的字段)。并且您知道需要共享其余字段的剩余字段数(c=未标记为“输入自定义值”的字段)。因此公式为(a-b)/c=您需要输入每个“c”字段的值。只需将创建的输入设置为“只读”。)uffff。。。。这将是H.A.R.D.您需要检查编辑了哪些元素,而不是从总数(或剩余总数)中减去它的值,并刷新“未触及”输入的值。在3个字段“未触及”后,您必须停止该部分。为什么?库斯:当你更改一个字段时,你必须将结果分成两个字段。
split 1 =  2000   [ ] enter custom value
split 2 = [4000]  [X] enter custom value
split 3 =  2000   [ ] enter custom value
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');
}
$('.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');
});