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);

下一个问题在最后两行

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

这两个字段不在#item tr您循环的范围内。所以你永远不会.find他们。它们也遭受与上述相同的问题。相反,这些行可能是

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

还需要对您的代码进行一些其他清理,将大括号放在错误的位置等,但我最终让您的代码正常工作。这是它的工作原理:http: //jsfiddle.net/Fg5Ly/5/

于 2013-06-07T15:17:12.780 回答