0
结果显示在第四我想计算3场的总和 - 在yii2动态表单si_mrp + si_discp + si_taxpc
。这是Calculate from 3 inputfield in dynamic form yii2的相同解决方案。但目前的解决方案不起作用。 表单字段3计算领域和yii2动态表单
<?= $form->field($modelsProductsales, "[{$i}]si_mrp")->label(false)->textInput(['maxlength' => true,'onchange' => 'getUdisc($(this))', 'onkeyup' => 'getUdisc($(this))','class' => 'mrp','placeholder' => 'MRP']) ?>
<?= $form->field($modelsProductsales, "[{$i}]si_discp")->label(false)->textInput(['maxlength' => true,'onchange' => 'getUdisc($(this))', 'onkeyup' => 'getUdisc($(this))','class' => 'discp','placeholder' => 'Disc %']) ?>
<?= $form->field($modelsProductsales, "[{$i}]si_taxpc")->label(false)->textInput(['maxlength' => true,'onchange' => 'getUdisc($(this))', 'onkeyup' => 'getUdisc($(this))','class' => 'taxpc','placeholder' => 'Tax %']) ?>
<?= $form->field($modelsProductsales, "[{$i}]si_rate")->label(false)->textInput(['maxlength' => true,'class' => 'rate','placeholder' => 'Rate']) ?>
javascript code -
<?php
/* start getting the rate */
$script = <<< JS
function getUdisc(item) {
var index = item.attr("id").replace(/[^0-9.]/g, "");
var total = current = next = previous = 0;
var id = item.attr("id");
var myString = id.split("-").pop();
if (myString == "si_mrp") {
fetch1 = index.concat("-si_discp");
fetch2 = index.concat("-si_taxpc");
} else if (myString == "si_discp") {
fetch1 = index.concat("-si_mrp");
fetch2 = index.concat("-si_taxpc");
} else {
fetch1 = index.concat("-si_discp");
fetch2 = index.concat("-si_mrp");
}
temp1 = $("#sellitem-"+fetch1+"").val();
temp2 = $("#sellitem-"+fetch2+"").val();
if (!isNaN(temp1) && temp1.length != 0) {
next = temp1;
}
if (isNaN(temp2) || temp2.length == 0) {
previous = temp2;
}
current = item.val();
if (isNaN(current) || current.length == 0) {
current = 0;
}
if (!isNaN(current) && !isNaN(next) && !isNaN(previous)) {
total = (parseFloat(current) + parseFloat(next) + parseFloat(previous)).toFixed(2);
}
udiscField = "sellitem-".concat(index).concat("-si_rate");
$("#"+udiscField+"").val(total);
}
JS;
$this->registerJs($script, View::POS_END);
/* end getting the rate */
?>
错误 的si_mrp
领域似乎并不加起来
但是,当我做了以下计算
total = (parseFloat(10.5) + parseFloat(11.5) + parseFloat(12.5)).toFixed(2);
我得到正确的结果。
我又可以看到,无论是si_mrp + si_discp
或si_discp + si_taxpc
发生,但不是si_mrp + si_discp + si_taxpc
不知道什么是错的这个代码。请帮忙。
检查所有属性值由'的console.log()',调试JS。从问题中删除不必要的HTML代码。 :) –
删除不必要的HTML代码。没有得到任何东西在控制台日志同样的js早些时候工作。 – Tanmay
你的函数名称不正确' '平变化'=> 'getUdisc($(本))''应该是' '平变化'=> 'getUtotal($(本))''。我猜。 –