0

こんにちは、ユーザーが追加ボタンをクリックしたときに外部ファイルからテーブル行を動的に追加するフォームがあり、フィールドの 1 つに計算を配置したいのですが、これは数量であり、数量の値を計算して表示したいと考えています。これまでの合計を計算するコードを書きましたが、うまくいかないようです。誰か助けてください
ここに私のスクリプトがあります

          $(document).ready(function(){
                $('#detail').on('keyup', '.qty', calculateRow());
                $('#addnew').click(function(){

                    var ctr = $('#items').val();
                    ctr++;

                    $.post('job_srch.php', {ctr : ctr}, function(data) {
                          $(data).appendTo('#detail');

                          $('#items').val(ctr);                        
                    });
                });


function calculateRow() {
       alert("GAYA");
       console.log("2");
        var add = 0;
            $(".qty").each(function() {
                    add += parseFloat(this.value);
                        if (isNaN(add)) {
                            $('#total').val("0");
                                } else {
                                  $('#total').val(add.toFixed(2));
                                }

                });


}
   });

ここに私のphpがあります

<?php
session_start();
require("includes/dbconnect.php");
include ('includes/function.php');

$zdb = $_SESSION["zdbyear"];
mysql_select_db($zdb);

if ($_REQUEST["ctr"]){
    $ctr = $_REQUEST["ctr"];
    //echo '<link rel="stylesheet" href="css/chosen.css" />';
echo '<tr>

   <td align="center"><input type="text" size="6" maxlength="6" maxlength="6" name="srno_'.$ctr.'" class="form-input-oth"/></td>
   <td align="center"><select data-placeholder="Party" style="width:300px;" name="item_'.$ctr.'" class="chzn-select-deselect" >
                                  <option value=""></option>';
                      $res = mysql_query("SELECT * FROM `items`") or die(mysql_error());
                      while ($row = mysql_fetch_array($res)) {
                             echo "<option value='$row[accode]'>$row[name]</option>";
                      }
    echo '</select></td>';
    echo '<td align="center"><input type="text" id="qty" size="6" maxlength="9" maxlength="6" name="qty_'.$ctr.'" class="qty form-input-amt"/></td>

                      </tr>';
}
else{
    echo "ERROR";
}
 ?>

これが私のテーブルです

            <table id="detail" border="1px" width="30%">
                  <tr>
                     <td width="130px" align="center"><label for=""><font color="#0099FF" size="3px">Sr No.</font><span></span></label></td>
                     <td width="130px" align="center"><label for=""><font color="#0099FF" size="3px">item</font><span></span></label></td>
                     <td width="130px" align="center"><label for=""><font color="#0099FF" size="3px">Quantity</font><span></span></label></td>
                  </tr>
</table>
4

1 に答える 1

0

最初に見つけた最も明らかなエラーは、コマンド「add += parseFloat(this.value);」です。動作しません。

正しい関数は次のようになります。

function calculateRow() {
   alert("GAYA");
   console.log("2");
   var add = 0;
   $(".qty").each(function() {
       add += parseFloat($(this).val()); // <-- changed from this.value
       if (isNaN(add)) {
           $('#total').val("0");
       } else {
           $('#total').val(add.toFixed(2));
       }
   });
}

次の行も変更する必要があります

$('#detail').on('keyup', '.qty', calculateRow());

$('#detail').on('keyup', '.qty', calculateRow);
于 2013-04-18T13:06:46.770 に答える