2017-01-28 30 views
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_discpsi_discp + si_taxpc发生,但不是si_mrp + si_discp + si_taxpc 不知道什么是错的这个代码。请帮忙。

+1

检查所有属性值由'的console.log()',调试JS。从问题中删除不必要的HTML代码。 :) –

+0

删除不必要的HTML代码。没有得到任何东西在控制台日志同样的js早些时候工作。 – Tanmay

+0

你的函数名称不正确' '平变化'=> 'getUdisc($(本))''应该是' '平变化'=> 'getUtotal($(本))''。我猜。 –

回答

1

更新这样的:

if (isNaN(temp2) || temp2.length == 0) { 
    previous = temp2; 
} 

if(!isNaN(temp2) && temp2.length != 0) { 
    previous = temp2; 
} 
+0

现在工作的罚款。再一次感谢你。 – Tanmay