2015-08-17 18 views
0

我想將值保存到db中,我們計算稱爲total和grand total.so我想在輸入字段中計算它。我嘗試過但是不起作用。 當我意識到問題出現在$('.multTotal',this).text(total);「文本」的行和$("#grandTotal").text(mult);和「文本」的行中。 u能幫助我PLZjQuery不能在輸入字段中工作

查看

<table class="table" id="boq_tbl"> 
     <thead> 

     <thead> 

      <tbody> 
    <tr class="txtMult"> 

       <td><input type="text" name="work_product_id" class="form-control" id="work_product_id" placeholder=""></td> 
    <td><input type="text" name="cost_code" class="form-control" id="cost_code" placeholder=""></td> 
    <td><input type="text" name="work_item_description" class="form-control" id="work_item_description" placeholder=""></td> 
    <td><input type="text" name="quentity" id="" class="form-control val1" /></td> 
    <td><input type="text" name="unit" class="form-control val2"/></td> 
    <td><input type="text" name="laboure_hrs" id="" class="form-control val3" /></td> 
    <td><input type="text"name="laboure_cost" id="" class="form-control val4"/></td> 
    <td><input type="text" name="others" class="form-control" id="others" placeholder=""></td> 


     <td> 
       <span class="multTotal">0.00</span> 
     </td> 
    </tr> 

    </tbody> 
     </table> 
<p align="right"> 
    Grand Total# <span id="grandTotal">0.00</span> 
</p> 

jQuery的

<script> 
$("#insert-more").click(function() { 
    $("#boq_tbl").each(function() { 
     var tds = '<tr class="txtMult">'; 
     jQuery.each($('tr:last td', this), function() { 
      tds += '<td>' + $(this).html() + '</td>'; 
     }); 
     tds += '</tr>'; 
     if ($('tbody', this).length > 0) { 
      $('tbody', this).append(tds); 
     } else { 
      $(this).append(tds); 
     } 
    }); 
}); 

$("#boq_tbl").on("keyup", ".txtMult input", multInputs); 


function multInputs() { 
    var mult = 0; 
    // for each row: 
    $("tr.txtMult").each(function() { 

     console.log('---dkhal'); 
     // get the values from this row: 
     var val1 = $('.val1', this).val(); 
     var val2 = $('.val2', this).val(); 
     var val3 = $('.val3', this).val(); 
     var val4 = $('.val4', this).val(); 
     var total = (val1 * val2) + (val3 * val4); 

     console.log('---'+val1 * val2); 
     $('.multTotal',this).text(total); 
     mult += total; 
    }); 
    $("#grandTotal").text(mult); 
} 


</script> 
+0

不應該在添加和乘法之前解析這些值嗎? –

+0

請試試我的回答 –

回答

1

請試試這個

function multInputs() { 
    var mult = 0; 
    $("tr.txtMult").each(function() { 
     var val1 = $('#val1', this).val(); 
     var val2 = $('#val2', this).val(); 
     var val3 = $('#val3', this).val(); 
     var val4 = $('#val4', this).val(); 
     var total = (parseInt(val1) * parseInt(val2)) + (parseInt(val3) * parseInt(val4)); 
     $('.multTotal',this).text(total); 
     mult += total; 
     $('#txtmultTotal').val(mult); 
    }); 
    $("#grandTotal").text(mult); 
    $('#txtgrandTotal').val(mult); 
} 

問題在你的代碼:

`val1,va12,val3,val4` 

不類,其標識的。所以你應該寫如$('#val1', this).val();,而不是$('.val1', this).val();

您應該使用parseInt()將該值轉換爲整數。

DEMO

+0

沒有val1 val3 val 2是類以及ID – ashik

+0

問題是它不起作用當我將總值作爲輸入字段添加 – ashik

+0

@ashik你檢查我的演示? –

2

我想到的是使用與此代碼的問題之一。而不是#整個。例如,

var val1 = $('.val1', this).val(); 

應該讀

var val1 = $('#val1', this).val(); 

,還有許多其他的例子。 「」是爲類和「#」是爲id。

+1

爲什麼不簡單'$('#val1')。val()'?因爲Ids必須是唯一的 – Satpal

+0

此代碼工作正常。但問題是當我將其插入輸入字段中時,例如: ​​而不是此代碼​​ 0.00它不起作用 – ashik

+2

它是如何工作的?你沒有正確的選擇器 –

0

如上變化所描述的 '類' 名稱 'ID' 具體又撥打了:在DOM後

$("#boq_tbl").on("keyup", ".txtMult input", multInputs);

方法是準備像

$(document).ready(function(){ 
 
    $("#boq_tbl").on("keyup" , ".txtMult input" , multInputs); 
 
});

相關問題