0

請求書テンプレートを作成しようとしていますが、明細行の合計、小計、付加価値税、および合計の入力が自動的に入力されるようにしたいと考えています。これまでに試したことはすべて結果をもたらさなかったようです。そのため、問題を解決するために私の最大の教育リソースに目を向けようと思いました。

これは、私が埋めようとしているページコードの一部です

<table class="appendo" width="100%" border="0" name="item" id="item">
    <tr>
      <td><input type="text" name="description[]" class="input3" tabindex="11"/></td>
      <td width="100"><input type="text" name="quantity[]" class="qtys" tabindex="12"/></td>
      <td width="100"><input type="text" name="cost[]" class="costs" tabindex="13"/></td>
      <td width="100"><input type="text" name="tot[]" class="tots" tabindex="14"/></td>
    </tr>
    </table>
    <input type="button" name="update" value="Update Totals" />
    <table width="200" border="0" name="totals" id="totals">
    <tr>
     <td width="100">Sub Total</td>
      <td width="100"><input name="sub" type="text" class="sub" tabindex="15" readonly="readonly"/></td>
      </tr>
      <tr>      
      <td width="100">VAT</td>
       <td width="100"><input name="vat" type="text" class="vat" tabindex="16" readonly="readonly"/></td> 
       </tr>
       <tr>   
      <td width="100">TOTAL</td>
      <td width="100"><input name="total" type="text" class="gtotal" tabindex="17" readonly="readonly"/></td>        
    </tr>
    </table>

そして、これは私がこれまでにまとめたスクリプトです

 $sumDisplay = $('input#total');

    var $sub = 0;
    var $vat = 0;
    var $total = 0;

    function compute() 
    {
    $('#item tr').each(function() {
                    //get line totals
    $sum = 0;   
    $sum = (
            parseFloat($(this).find('.qtys').val())*
            parseFloat($(this).find('.costs').val())
        );
    $(this).find('.tots').val=$sum;
                   //get sub total    
    var value = Number($(this).find('.tots').val())
             $sub += value; );
                   //Get VAT
    $vat = $sub*1.2;
    }
                  //Write Values
    $(this).find('.sub').val=$sub;
    $(this).find('.vat').val=$vat;
    });

動作していないことを確認したい場合は、フィドルを使用します。

皆さんが助けてくれることを願っています。

4

1 に答える 1

1

簡単なコメントで述べたように、投稿したコードの主な問題は、何も呼び出さないことですがcompute、それは見落としであり、マークアップに明確にあるボタンはそのメソッドを呼び出すはずです.

次の問題は、次のようなすべての行です。

$(this).find('.tots').val=$sum;

val()はメソッドであるため、その行は次のようになります

$(this).find('.tots').val($sum);

次の問題は最後の2行

$(this).find('.sub').val=$sub;
$(this).find('.vat').val=$vat;

#item trこれらの 2 つのフィールドは、ループしている の範囲内にありません。だからあなたは決して.findそれらをしません。彼らはまた、上記と同じ問題に苦しんでいます。代わりに、それらの行は

$('.sub').val($sub);
$('.vat').val($vat);

コードのクリーンアップ、間違った場所のブレースなどが必要でしたが、最終的にコードが機能するようになりました。これが機能しています:http://jsfiddle.net/Fg5Ly/5/

于 2013-06-07T15:17:12.780 に答える