2014-12-24 22 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表? –