0

フォーム リストの更新を作成しました。そして、すべての行にはテキストボックスのセットがあります。各テキストボックスには、クエリ結果に基づいた独自の値があります。各列の最後には選択ボックスがあります。また、有効または無効を選択できます。ユーザーが各行の INVALID ステータスを選択した場合、私の目標は単純です。数量と価格および合計の値は 0 に設定され、以下の計算は、選択に設定されたアイテム/行に基づいて減少します。INVALID の場合、選択した行が小計金額から差し引かれます。

問題:

  1. ユーザーがステータスをINVALIDに設定した場合のトリガーでは問題はありませんが、ユーザーが選択をトリガーしてVALIDに戻した場合。自分の価値を取り戻すことはできません。
  2. ユーザーが を INVALID に設定した場合、小計の合計は差し引かれません。その方法がわからないからです。

以下に私のコードの一部を示します。

Here is my jquery section:

$('[id^=qty],[id^=price]').on('change',function() {

        var index = this.id.match(/\d+/)[0];
        var qty = parseInt($('#qty'+index).val());
        var price = parseFloat($('#price'+index).val());
        var total = 0;

        $('#total'+index).val((qty * price ? qty * price : 0).toFixed(2));

        var total = 0;
        $('[id^=total]').each(function(index){
            total+=parseFloat($(this).val()?$(this).val():0);
        });
        $('#sum_of_total').val(total.toFixed(2));

        var vatable = total / 1.12;
        var vatable_amt = vatable * 0.12;
        var totalVat = vatable + vatable_amt;

        $('#vatable').val(vatable.toFixed(2)); 
        $("#vatable_amount").val(vatable_amt.toFixed(2));
        $("#gtotal").val(totalVat.toFixed(2));

    });

    $('[id^=status_validate]').on('change',function(){

       var index = this.id.match(/\d+/)[0];

       var status_set = $("#status_validate"+index).val();
       var price_set = $("#price"+index).val();
       var qty_set = $("#qty"+index).val();
       var total_set = $("#total"+index).val();

       var temp_price = price_set;
       var temp_qty = qty_Set;
       var temp_total = tota_set;

       console.log(status_set);

       if(status_set == 'VALID'){

            $("#price"+index).val(price_set);
            $("#qty"+index).val(price_set);
            $("#total"+index).val(price_set);

       }else{

            price_set = 0.00;
            qty_set = 0.00;
            total_set = 0.00;

            $("#price"+index).val(price_set);
            $("#qty"+index).val(price_set);
            $("#total"+index).val(price_set);

       }

    });

そして、これがループ部分です

$val = 0;

foreach($order_info_list->result_array() as $details){

    $val++;

    $vatable_input = $details['vatable_input'];
    $vatable_amount = $details['vatable_amount'];
    $total_amount_due = $details['total_amount_due'];

    echo "<tr>";
        echo "<td><input type='text' name='itemdesc[]' value = ".$details['item_desc']." /></td>";
        echo "<td><input type='text' name='qty[]' value=".$details['item_qty']." id='qty{$val}' /></td>";
        echo "<td><input type='text' name='price[]' value=".number_format($details['item_price'],2)." id='price$val' /></td>";
        echo "<td><input type='text' name='total[]' class='k-textbox' id='total{$val}' style='font-family: courier; text-align: right; background-color: lightgray; color: red' readonly='readonly' value='".$details['total']."' /></td>";
        echo "<td width='30%'>";

         $stat = $details['status'];

         echo "<select name='status[]' id='status_validate[$val]'>";    
             if($stat == 'VALID'){
                echo "<option value='VALID' selected='selected'>VALID</option>";
                echo "<option value='INVALID'>INVALID</option>";
             }else{
                echo "<option value='VALID'>VALID</option>";
                echo "<option value='INVALID' selected='selected'>INVALID</option>";
             }
          echo "</select>";
        echo "</td>";
    echo "</tr>";

    $idx = $details['poid'];

    echo "<input type='hidden' name='idx[]' value='{$idx}' />";

    $code_x = $details['order_code'];



}

以下は、合計計算の表示です

 <tr>
   <td></td>
   <td></td>
   <td></td>
   <td>VATable Amount:</td>
   <td><input type="text" class="k-textbox" value="0.00" readonly="readonly" style="color: red; text-align: right; font-family: courier" name="vatable" id="vatable" /></td>
 </tr>
 <tr>
   <td></td>
   <td></td>
   <td></td>
   <td>VAT Input:</td>
   <td><input type="text" class="k-textbox" value="0.00" readonly="readonly" style="color: red; text-align: right; font-family: courier" name="vatable_amount" id="vatable_amount" /></td>
  </tr>
  <tr>
    <td></td>
    <td></td>
    <td></td>
    <td>TOTAL AMOUNT DUE:</td>
    <td><input type="text" class="k-textbox" value="0.00" readonly="readonly" style="color: red; text-align: right; font-family: courier" name="subtotal" id="gtotal" /></td>
  </tr>

ここにフィドルがありますhttp://jsfiddle.net/y6d8m/4

4

1 に答える 1

1

「INVALID」時は最後のデータを保存

        $("#price"+index).attr('data-last',price_set);
        $("#qty"+index).attr('data-last',qty_set);
        $("#total"+index).attr('data-last',total_set);

ユーザーが元に戻すときに復元する

restoreLast($("#price"+index));
restoreLast($("#qty"+index));
restoreLast($("#total"+index));

function restoreLast(e){
    e.val(e.data('last'));
    //trigger automatic computation
    e.change();
}

http://jsfiddle.net/y6d8m/3/

于 2013-08-30T02:18:01.537 に答える