0

私の問題についてあなたの助けが必要です.私の質問の問題で申し訳ありません.私の質問にタイトルを付ける方法がわかりません. 私の問題を理解してください。今ここにあります。

ところで、私は発注書フォームを作成しています。

テキストボックス、選択範囲、およびいくつかのボタンで構成される表フォームを作成しました。シナリオは。サプライヤー名を含む選択ボックスがあります。そして、セレクションが行われた後。自動フィルターが有効になります。すべてのサプライヤーの情報/詳細を記入します。住所、連絡先、など...

サプライヤーの情報の下に、注文を挿入するための行があります。最初の列は品目コード、2 番目は数量、3 番目は価格、最後の価格は合計です。テーブルの下には、総計、付加価値税、割引などを計算するテキストボックスがあります...

今、ここが私がどうすればよいかわからない部分です。サプライヤーを選択した後、jquery はTinテキスト ボックスに値があるかどうかを検出する必要があります。値を自動的に表示する場合、問題はありません。しかし、私の本当の問題は計算側にあります。前に述べたように、表の下はvatの計算です。Tin テキストボックスが空でない場合、vatの計算をトリガーする必要があります。Tin テキストボックスが空でない場合、VAT の計算を有効にする必要があります。空の場合、jquery はこの部分をスキップする必要があります。

ここに私のサンプルコードがあります:

jquery部分

    //automatic computation in rows
    $('[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));

        //NOW HERE'S THE COMPUTATION FOR VAT THAT SHOULD SKIP IF THE TIN IS EMPTY
        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));
        //END OF COMPUTATION
    });

    //HERE'S THE AUTO ASSIGN OF VALUES
    //AUTO ASSIGN TO SUPPLIER INFO
    $('#supplier_list').bind('change', function(){
        var var_add_category ='<?php echo site_url("purchaseorder_controller/supplier_details"); ?>';
        $.ajax({
            type:'POST',
            url: var_add_category,
            data:{ id: $(this).val() },
            dataType:'json',
            success:function(d){

                var bankname = d['bankname'];
                var bankbranch = d['bankbranch'];

                $("[name=spaddress]").val(d['spaddr']);
                $("[name=tin]").val(d['sptinno']);
                $("[name=contactperson]").val(d['pricontactname']);
                $("[name=contactnumber]").val(d['sptelno']);
                $("[name=bank]").val(bankname + ' - ' + bankbranch);
                $("[name=account_name]").val(d['bankacctname']);
                $("[name=account_no]").val(d['bankacctno']);

            }
        });    
    });

HTML/PHP 部分は次のとおりです

Here's the supplier entry, it will trigger to add information in the supplier fields

<select id="supplier_list" style="width: 100%;" name="supplier_id" required="required">
    <option value="">--Choose Supplier--</option>
      <?php
         foreach($resultSelectSupplier->result_array() as $suppliers){
           echo "<option value=".$suppliers['spid'].">".$suppliers['spname']."</option>";
         }
      ?>
</select>
.
.
.
//The TIN textbox that need to validate if empty or not(used for computation in VAT)
 <td>
      <label>TIN #</label>
 </td>
 <td>
      <input type="text" class="k-textbox" name="tin" maxlength="11" id="tin_number" />
 </td>

これは、注文項目を追加するために行をループするための PHP 部分です。

 <?php

    $sqlGetCode = "SELECT itemid,itemcode,itemname FROM items";
    $resultGetCode = $this->db->query($sqlGetCode);

    for($i = 1; $i < 16; $i++){

       echo "<tr>";
          echo "<td>";
             echo "<select name='code[]' id='code{$i}' style='width:100'>";
                echo "<option value=''><label>--CHOOSE ITEMS--</label></option>";

                foreach($resultGetCode->result_array() as $list){
                   echo "<option value='".$list['itemid']."'>".$list['itemcode']." --- ".$list['itemname']."</option>";  
                }
             echo "</select>";
          echo "</td>";

          echo "<td><input type='text' name='qty[]' id='qty{$i}' style='text-align: center' value='' /></td>";
          echo "<td><input type='text' name='price[]' id='price{$i}' style='text-align: right;' value='' onblur='' /></td>";
          echo "<td><input type='text' name='total[]' id='total{$i}' style='font-family: courier; text-align: right; background-color: lightgray; color: red' readonly='readonly' value='' /></td>";
      echo "<tr>";

    }

?>

最後に計算項目を表示するテキストボックス

 <div align="right">
            <table>
                    <tr>
                        <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>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>TOTAL SALES:</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>

                    <tr>
                        <td></td>
                        <td></td>
                        <td>PURCHASE DISCOUNT:</td>
                        <td><input type="text" class="k-textbox" value="0.00" style="color: red; text-align: right; font-family: courier" name="discount" id="discount" /></td>
                    </tr>

                    <tr>
                        <td></td>
                        <td></td>
                        <td>TOTAL AMOUNT DUE:</td>
                        <td><input type="text" class="k-textbox" value="0.00" style="color: red; text-align: right; font-family: courier" name="total_amt_due" id="total_amt_due" /></td>
                    </tr>
                    <input type="hidden" id="sum_of_total" name="sum_of_total" />
            </table>
        </div>

計算式は次のとおりです。

*注: この計算は、TIN テキストボックスが空でない場合にトリガーされます

VATABLE AMOUNT = SUM OF TOTAL / 1.12
VATABLE INPUT = VATABLE AMOUNT * 0.12
TOTAL SALES = VATABLE AMOUNT + VATABLE INPUT

*注: この計算は固定されています。TIN がない場合、SUM OF TOTAL が TOTAL AMOUNT DUE を計算するためのデフォルト値になります。

Computation for total amount due:
PURCHASE DISCOUNT = The user will input any discount number here
TOTAL AMOUNT DUE = TOTAL SALES - PURCHASE DISCOUNT (should be trigger automatically)

これがフィドルです: http://jsfiddle.net/rochellecanale/dtfV4/

4

1 に答える 1

1

onchangeイベントに条件を追加できます。

//NOW HERE'S THE COMPUTATION FOR VAT THAT SHOULD SKIP IF THE TIN IS EMPTY
var vatable = 0;
var vatable_amt = 0;
var totalVat = 0;

if($("#tin_number").val().length != 0)
{
    var vatable = total / 1.12;
    var vatable_amt = vatable * 0.12;
}
totalVat = vatable + vatable_amt;

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

TIN 番号の長さが 0 より大きい場合にのみ VAT を計算します。理想的には、長さは 10 である必要があり、TIN 番号が数字であるかどうかも確認できます。

于 2013-09-04T06:20:31.527 に答える