Как сделать вычисления цикла PHP <input>с отображением их в цикле JavaScript? - PullRequest
0 голосов
/ 02 января 2019

Здравствуйте, я здесь, потому что столкнулся с действительно большой проблемой при отображении вычислений цикла входных тегов.

Я имею в виду, что есть 5 строк, имеющих поля ввода, и в конце каждой строки есть область пролета для отображения вычислений строк отдельно для каждой строки, но я не могу этого сделать

вот код страницы

<!DOCTYPE html>
<html>
<head>
    <title>Invoice</title>
    <script src="invoice.js"></script>
</head>
<body>
<form action="fppdf.php" method="post" id="myform">
    <center>
    <table>
    <tr>
        <td colspan="4">
            <table id="myTable">
                <tr class="bg">
                    <th >SI.NO.</th>
                    <th>Description of Goods</th>
                    <th>HSN Code</th>
                    <th>UOM</th>
                    <th>QTY.</th>
                    <th>Weight</th>
                    <th>Rate</th>
                    <th>Taxable  Amount</th>
                </tr>

                 <?php 
                    //$n=$_GET['no'];

                    for ($i=0; $i < 2; $i++) { 
                ?>
                        <tr> 
                            <td><?php echo $i; ?></td>
                            <td><input type="text" id="description" name="description[]"></td>
                            <td><input type="text" id="hsn" name="hsn[]"></td>
                            <td><input type="text" id="uom" name="uom[]"></td>
                            <td><input type="number" id="qty" name="qty[]"></td>
                            <td><input type="number" id="weight" name="weight[]"></td>
                            <td><input type="number" id="rate" name="rate[]" ></td>
                            <td><span id="tax_amt" name="tax_amt[]" ></span></td>
                        </tr>
                    <?php } ?>
            </table>
        </td>
    </tr>
    <tr>        
        <td colspan="4">
            <table class="ltable">
                <tr><td>Total Amount Before Tax :</td><td> <span id="sub"></span></td></tr>
                <tr><td>Add CGST : <input type="number" name="cgst" step="0.01" id="9cgst" onblur="taxamt()"> </td><td><span id="cgst9"></span></td></tr>
                <tr><td>Add SGST : <input type="number" name="sgst" step="0.01" id="9sgst" > </td><td><span id="sgst9"></span></td></tr>
                <tr><td>Tax Amount GST : <span id="gst9"></span> </td><td> <span id="gst18"></span></td></tr>
                <tr><td>Total Amount After Tax </td><td> <span id="tot"></span></td></tr>
                <tr>
                    <td><input type="Submit" class="Submit" value="Submit"></td>
                    <td><a  onclick="taxamt()" class="calculate">calculate</a></td>
                </tr>
            </table>
        </td>
    </tr>
    </table>
    </center>



</form>
</body>
</html>

и вот файл JS

//var my = [];
function taxamt() {
    // body...
    var wt = document.getElementById('weight').value;
    var rate = document.getElementById('rate').value;
    var qty = document.getElementById('qty').value;


    var t =0;
    var i =0;

    var r =0;

    // for(i=0; i < 2;i++){

        r =(wt*rate)*qty;
        // my.push(r);
        document.getElementById("tax_amt").innerHTML = r +"&#x20b9;";
//      t+=r;
     // }


    document.getElementById("sub").innerHTML = t +"&#x20b9;" ;



    //TAX CALCULATION

    var cgst9 = document.getElementById("9cgst").value;
    var sgst9 = document.getElementById("9sgst").value;
    var gst9 = parseInt(cgst9)+parseInt(sgst9);

    var cgst = (t)*parseInt(cgst9)/100;
    var sgst = (t)*parseInt(sgst9)/100;
    var gst = cgst + sgst;

    document.getElementById("cgst9").innerHTML = cgst + " &#x20b9;" ;
    document.getElementById("sgst9").innerHTML = sgst + " &#x20b9;" ;
    document.getElementById("gst18").innerHTML = gst + " &#x20b9;" ;
    document.getElementById("gst9").innerHTML = gst9 + "%";
    var tot_gst = t+gst;

    document.getElementById("tot").innerHTML = tot_gst+" &#x20b9;" ;

}

как я могу правильно показать расчеты на той же странице, как если бы вывод был правильным, но на другой странице после того, как я отправил форму.

1 Ответ

0 голосов
/ 02 января 2019

ID уникальны, используйте ваш php цикл для создания уникального идентификатора, который вы будете использовать в цикле JS:

<?php
for ($i=0; $i < 2; $i++) { 
?>
<tr> 
  <td><?php echo $i; ?></td>
  <td><input type="text" id="description<?php echo $i; ?>" name="description[]"></td>
  <td><input type="text" id="hsn<?php echo $i; ?>" name="hsn[]"></td>
  <td><input type="text" id="uom<?php echo $i; ?>" name="uom[]"></td>
  <td><input type="number" id="qty<?php echo $i; ?>" name="qty[]"></td>
  <td><input type="number" id="weight<?php echo $i; ?>" name="weight[]"></td>
  <td><input type="number" id="rate<?php echo $i; ?>" name="rate[]" ></td>
  <td><span id="tax_amt<?php echo $i; ?>" name="tax_amt[]" ></span></td>
</tr>
<?php } ?>

А в JS:

total=0;
for(i=0; i < 2;i++){
  wt = document.getElementById('weight'+i).value;
  rate = document.getElementById('rate'+i).value;
  qty = document.getElementById('qty'+i).value;
  r =(wt*rate)*qty;
  total+=r;
  document.getElementById('tax_amt'+i).innerHTML = r +'&#x20b9;';
}
document.getElementById('sub').innerHTML = total +'&#x20b9;';

Это может быть чище, если использовать класс и каждый цикл (см. здесь для начала), но версия инкремента цикла сделает эту работу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...