在每个输入类型中设置不同的计算=";“数字”;使用JQuery

在每个输入类型中设置不同的计算=";“数字”;使用JQuery,jquery,Jquery,现在,我正在使用PHP代码和JQuery进行计算。我对JQuery不是很有经验。我用这个图像解释 我有3个字段:“资本”、“加价”和“每项成本”。每个字段都有不同的公式。该公式用于计算每个字段 以下是公式: 资本=每项成本/(100+加价)/100) 加价=((每项成本/资本)-1)*100 每项成本=(资本+(资本*(加价/100))) 在本例中,我尝试使用JQuery构建公式。这就是我所做的。我也在这里做了一个样品。只需单击顶部页面上的“运行”按钮,即可对其进行测试 HTML $(函

现在,我正在使用PHP代码和JQuery进行计算。我对JQuery不是很有经验。我用这个图像解释

我有3个字段:“资本”、“加价”和“每项成本”。每个字段都有不同的公式。该公式用于计算每个字段

以下是公式:

  • 资本=每项成本/(100+加价)/100)
  • 加价=((每项成本/资本)-1)*100
  • 每项成本=(资本+(资本*(加价/100)))
在本例中,我尝试使用JQuery构建公式。这就是我所做的。我也在这里做了一个样品。只需单击顶部页面上的“运行”按钮,即可对其进行测试

HTML

$(函数(){
$('.capital')。在('input',function()上{
var资本=$(this.val();
var markup=$(this.closest(“tr”).find('.markup').val();
var costPerUnit=$(this.closest(“tr”).find('.costPerUnit').val();
如果(标记!=''){
var公式CostPerUnit=(资本+(资本*(加价/100));
$(this).closest(“tr”).find('.costPerUnit').val(formulaCostPerunit);
}
如果(成本单位!=''){
var formulaMarkup=((成本单位/资本)-1)*100;
$(this).closest(“tr”).find('.markup').val(formulaMarkup);
}
});
$('.markup')。在('input',function()上{
var capital=$(this).tr.find('.capital').val();
var markup=$(this.val();
var costPerUnit=$(this.closest(“tr”).find('.costPerUnit').val();
如果(大写!=''){
var公式CostPerUnit=(资本+(资本*(加价/100));
$(this).closest(“tr”).find('.costPerUnit').val(formulaCostPerunit);
}
如果(成本单位!=''){
var formulaCapital=costPerUnit/(100+加价)/100)
$(此).tr.find('.capital').val(formulaCapital);
}
});
$('.costPerUnit')。在('input',function()上{
var capital=$(this).tr.find('.capital').val();
var markup=$(this.closest(“tr”).find('.markup').val();
var costPerUnit=$(this.val();
如果(大写!=''){
var formulaMarkup=((成本单位/资本)-1)*100;
$(this).closest(“tr”).find('.markup').val(formulaMarkup);
}
如果(标记!=''){
var formulaCapital=costPerUnit/(100+加价)/100)
$(此).tr.find('.capital').val(formulaCapital);
}
});
});

项目
首都
加价(%)
每项费用
书
笔

如果在编辑第三个字段时填写了其他两个字段,则代码将重新计算其他每个字段

例如,如果同时填写了“资本”和“每项成本”,然后编辑标记,则它将根据原始资本和编辑的标记计算每项新成本,并根据原始“每项成本”和编辑的标记计算新资本

您需要选择一个具有优先级,并且只更新其他两个字段中的一个。您可以使用
else if
而不是第二个
if
来执行这两个更新

另一个问题是,在进行计算之前,您没有将输入转换为数字。因此,
+
正在执行串联而不是加法

如果用户将输入字段编辑为空值,则应将其视为默认值

您可以使用
toFixed(2)
仅使用小数点后的两位数字而不是长分数来显示结果

$(函数(){
$('.capital')。在('input',function()上{
var capital=parseFloat($(this).val()| | 0);
var markup=$(this.closest(“tr”).find('.markup').val();
var costPerUnit=$(this.closest(“tr”).find('.costPerUnit').val();
如果(标记!=''){
markup=parseFloat(标记);
var公式CostPerUnit=(资本+(资本*(加价/100));
$(this).closest(“tr”).find('.costPerUnit').val(formulaCostPerunit.toFixed(2));
}否则如果(成本单位!=''){
costPerUnit=parseFloat(costPerUnit);
var formulaMarkup=((成本单位/资本)-1)*100;
$(this.closest(“tr”).find('.markup').val(formulaMarkup.toFixed(2));
}
});
$('.markup')。在('input',function()上{
var capital=$(this).tr.find('.capital').val();
var markup=parseFloat($(this).val()| | 0);
var costPerUnit=$(this.closest(“tr”).find('.costPerUnit').val();
如果(大写!=''){
资本=浮动(资本);
var公式CostPerUnit=(资本+(资本*(加价/100));
$(this).closest(“tr”).find('.costPerUnit').val(formulaCostPerunit.toFixed(2));
}否则如果(成本单位!=''){
costPerUnit=parseFloat(costPerUnit);
var formulaCapital=costPerUnit/(100+加价)/100)
$(this.closed(“tr”).find(“.capital”).val(formulaCapital.toFixed(2));
}
});
$('.costPerUnit')。在('input',function()上{
var capital=$(this).tr.find('.capital').val();
var markup=$(this.closest(“tr”).find('.markup').val();
var costPerUnit=parseFloat($(this.val()| | 0);
如果(大写!=''){
资本=浮动(资本);
var formulaMarkup=((成本单位/资本)-1)*100;
$(this.closest(“tr”).find('.markup').val(formulaMarkup.toFixed(2));
}else if(标记!=''){
markup=parseFloat(标记);
var formulaCapital=costPerUnit/(100+加价)/100)
$(this.closed(“tr”).find(“.capital”).val(formulaCapital.toFixed(2));
}
});
});

项目
首都
加价(%)
每项费用
书
笔

为什么将可执行版本放在repl.it?你可以用一个来做一个可执行的例子。啊,对不起,我是stackoverflow的新手。