如何计算yii2动态形式的四个字段的输入

时间:2017-07-07 08:24:37

标签: yii2

我有五个领域,数量。折扣,cgst_percent,cgst_amount。 我想计算cgst_amount。公式应为 -

cgst_amount = ((rate*qty - (rate*qty*discount)/100)*cgst_percent)/100

要从简单的步骤开始,我尝试了cgst_amount = rate*qty

javascript部分如下 -

<?php
/* start getting the cgst */
$script = <<< JS
function getGst(item) {
    var index  = item.attr("id").replace(/[^0-9.]/g, "");
    var qtyvar = ratevar = discvar = cgstpercentvar = cgstvar = 0;

    var id = item.attr("id");
    var myString = id.split("-").pop();

    if (myString == "rate") {
        fetch1 = index.concat("-qty");
        fetch2 = index.concat("-discount");
        fetch3 = index.concat("-cgst_rate");
    } else if (myString == "qty") {
        fetch1 = index.concat("-rate");
        fetch2 = index.concat("-discount");
        fetch3 = index.concat("-cgst_rate");
    } else if (myString == "discount"){
        fetch1 = index.concat("-qty");
        fetch2 = index.concat("-rate");
        fetch3 = index.concat("-cgst_rate");
    } else {
        fetch1 = index.concat("-qty");
        fetch2 = index.concat("-rate");
        fetch3 = index.concat("-discount");
    }

    temp1 = $("#productsales-"+fetch1+"").val();
    temp2 = $("#productsales-"+fetch2+"").val();
    temp3 = $("#productsales-"+fetch3+"").val();
    //alert (temp2);

    if (!isNaN(temp1) && temp1.length != 0) {
        ratevar = temp1;
    }

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

    if (isNaN(temp3) || temp3.length != 0) {
        cgstpercentvar = temp3;
    }

    qtyvar = item.val();
    if (isNaN(qtyvar) || qtyvar.length == 0) {
        qtyvar = 0;
    }
    //alert (qtyvar);
    if (!isNaN(qtyvar) && !isNaN(ratevar) && !isNaN(discvar) && !isNaN(cgstpercentvar)) {
        cgstvar = (parseFloat(qtyvar) * parseFloat(ratevar)).toFixed(2);

    }

    cgstField = "productsales-".concat(index).concat("-cgst_amount");

    $("#"+cgstField+"").val(cgstvar);

}
JS;
$this->registerJs($script, View::POS_END);
/* end getting the cgst */
?>

当我键入rate和qty时,我将它们乘以cgst_amount文本框中的输出。到目前为止没问题。只要我在折扣中键入任何内容,相同的文本就会以cgst_amount写为输出。

enter image description here 我对javascript部分不太确定 它是 - Calculate from 3 inputfield in dynamic form yii2Calculate 3 fields and display the result in the 4th in yii2 dynamic form

的扩展名

如果我使用完整公式,则javascript计算部分变为 - cgstvar = ((((parseFloat(ratevar) * parseFloat(qtyvar)) - (parseFloat(ratevar) * parseFloat(qtyvar) * parseFloat(discvar))/100) * parseFloat(cgstpercentvar))/100).toFixed(2);

示例如下图所示 - enter image description here

实际结果应该是 - 5.43。相反,我得到-0.00

1 个答案:

答案 0 :(得分:0)

你用字段和变量进行了网格化,我稍微更新了一个脚本:

function getGst(item) {
    var index  = item.attr("id").replace(/[^0-9.]/g, "");
    var qtyvar = ratevar = discvar = cgstpercentvar = cgstvar = 0;

    var id = item.attr("id");
    var myString = id.split("-").pop();

    quantity = index.concat("-qty");
    rate = index.concat("-rate");
    discount = index.concat("-discount");
    cgstRate = index.concat("-cgst_rate");

    temp1 = $("#productsales-"+quantity+"").val();
    temp2 = $("#productsales-"+rate+"").val();
    temp3 = $("#productsales-"+discount+"").val();
    temp4 = $("#productsales-"+cgstRate+"").val();

    if (isNaN(temp1) || temp1.length != 0) {
        qtyvar = temp1;
    }

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

    if (isNaN(temp3) || temp3.length != 0) {
        discvar = temp3;
    }

    if (isNaN(temp4) || temp4.length != 0) {
        cgstpercentvar = temp4;
    }

    if (!isNaN(qtyvar) && !isNaN(ratevar) && !isNaN(discvar) && !isNaN(cgstpercentvar)) {
        cgstvar = ((((parseFloat(ratevar) * parseFloat(qtyvar)) - (parseFloat(ratevar) * parseFloat(qtyvar) * parseFloat(discvar))/100) * parseFloat(cgstpercentvar))/100).toFixed(2);
    }

    cgstField = "productsales-".concat(index).concat("-cgst_amount");

    $("#"+cgstField+"").val(cgstvar);

}
相关问题