2014-12-24 17 views
0

如何访问类表元素来计算其价值使用javascript计算某些值时,内部表格和外部表格html标记有什么不同?

注:如果我不把输入元素表 - > tbody-> TR-> TD它将与下面的JavaScript工作如果我把输入元素纳入它会为我工作(如果我不使用表)。

那么当我把input元素放入表标签里面的tbody时会出现什么问题呢?

这里是HML标签

<?php echo form_open(base_url('invoice/add'));?> 
<table class="table table-condensed"> 
<thead> 
    <tr> 
     <td><strong>No</strong></td> 
     <td><strong>DESCRIPTION</strong></td> 
     <td><strong>Type</strong></td> 
     <td><strong>QUANTITY</strong></td> 
     <td><strong>UNIT PRICE</strong></td> 
     <td><strong>AMOUNT (USD)</strong></td> 
    </tr> 
</thead> 
<tbody> 
    <tr> 
     <td width="30px">1</td> 
     <td width="auto"><?php echo form_textarea('descr',set_value('descr',''),'class="descriptoin my-form-control"')?></td> 
     <td><?php echo form_dropdown('type',$type,'',' class="type form-control" placeholder="type"')?></td> 
     <td><?php echo form_input('quant',set_value('quant',' '),'class="qty"')?></td> 
     <td><?php echo form_input('unit_p',set_value('unit_p',' '),'class="unit"')?></td> 
     <td><?php echo form_input('amount',set_value('amount',' '),'class="amount" readonly')?>$</td> 
    </tr> 
    <tr> 
     <td></td> 
     <td><?php echo form_textarea('descr',set_value('descr1',''),'class="descriptoin my-form-control"')?></td> 
     <td></td> 
     <td><?php echo form_input('vat',set_value('',''), 'class="qty"')?></td> 
     <td><?php echo form_input('vat',set_value('',''), 'class="unit"')?></td> 
     <td><?php echo form_input('vat',set_value('',''), 'class="amount" readonly')?>$</td> 
    </tr> 
    <tr> 
     <td></td> 
     <td><?php echo form_textarea('descr',set_value('descr2',''),'class="descriptoin my-form-control"')?></td> 
     <td></td> 
     <td><?php echo form_input('vat',set_value('',''), 'class="qty"')?></td> 
     <td><?php echo form_input('vat',set_value('',''), 'class="unit"')?></td> 
     <td><?php echo form_input('vat',set_value('',''), 'class="amount" readonly')?>$</td> 
    </tr> 
    <tr> 
     <td></td> 
     <td><?php echo form_textarea('descr',set_value('descr3',''),'class="descriptoin my-form-control"')?></td> 
     <td></td> 
     <td><?php echo form_input('vat',set_value('',''), 'class="qty"')?></td> 
     <td><?php echo form_input('vat',set_value('',''), 'class="unit"')?></td> 
     <td><?php echo form_input('vat',set_value('',''), 'class="amount" readonly')?>$</td> 
    </tr> 
    <tr> 
     <td></td> 
     <td><?php echo form_textarea('descr',set_value('descr4',''),'class="descriptoin my-form-control"')?></td> 
     <td></td> 
     <td><?php echo form_input('vat',set_value('',''), 'class="qty"')?></td> 
     <td><?php echo form_input('vat',set_value('',''), 'class="unit"')?></td> 
     <td><?php echo form_input('vat',set_value('',''), 'class="amount" readonly')?>$</td> 
    </tr> 
    <tr> 
     <td></td> 
     <td><?php echo form_textarea('descr',set_value('descr5',''),'class="descriptoin my-form-control"')?></td> 
     <td></td> 
     <td><?php echo form_input('vat',set_value('',''), 'class="qty"')?></td> 
     <td><?php echo form_input('vat',set_value('',''), 'class="unit"')?></td> 
     <td><?php echo form_input('vat',set_value('',''), 'class="amount" readonly')?>$</td> 
    </tr> 
    <tr> 
     <td></td> 
     <td></td> 
     <td></td> 
     <td></td> 
     <td>Total</td> 
     <td><?php echo form_input('total',set_value('total',''),'class="result" readonly ')?>$</td> 
    </tr></tbody> 

</table> 
<?php echo form_close();?> 

,这里是我的Javascript功能来计算所有定量单元量单位*定量的,我用的变量来总结所有金额为结果=金额+金额(n)

但它不起作用,当我使用输入元素到表里面的tbody在以上。

<script type="text/javascript"> 

$(function() { 
    $('.unit,.qty').on('change', function() { 
    var unit = $(this).hasClass('unit') ? $(this).val() : $(this).siblings('.unit').val(); 
    var qty = $(this).hasClass('qty') ? $(this).val() : $(this).siblings('.qty').val(); 
    unit = unit || 0; 
    qty = qty || 0; 
    var val = unit >= 1 && qty >= 1 ? parseFloat(unit * qty) : 0; 
    $(this).siblings('.amount').val(val); 
    var total = 0; 
    var update = false; 
    $('.amount').each(function() { 
     val = parseFloat($(this).val()) | 0; 
     total = val ? (parseFloat(total + val)) : total; 
    }); 
    $('.result').val(total); 
    }); 
}); 

</script> 

这里是我的图片引起

enter image description here 对不起它可能太糟糕了,因为太多的HTML代码,但是我有这个代码

做请帮帮忙。

+1

这是最好的计算不是在客户端的JavaScript – agentpx

+0

你没有结束'' ... – abiessu

+0

我在服务器端汇总使用PHP将数据发送到数据库,并且在发送到数据库之前使用Javascript处理或计算值比使用PHP计算更好。我已经结束了我的html标记是不正确的 –

回答

0

请检查你的代码,您正在使用的兄弟姐妹......

$(this).siblings('.amount').val(val); // there is no any sibling 
$(this).parent().siblings('.amount').val(val) // try this. 
+0

你可以在这里看到它会工作,如果我不使用表 http://jsfiddle.net/ hsopheak/8bjupksk/ –

+0

小提琴的数量和金额是兄弟姐妹。两者都在同一个分区。但在桌上,两人都不同,所以他们不是兄弟姐妹。 –

+0

那么,我应该如何使用调用数量和金额,而不是sibligns表? –