2016-09-14 84 views
0

我創建了一個多輸入交換率,我想計算多輸入textfield的總和*選擇選項設計 我找到了解決方案,但問題是當我把0他讀爲1:jquery兩個乘法字段的總和

enter image description here enter image description here

$('input.summable,.multiply').keyup(function() { 
    var rate = 0; 
    var box = 0; 
     rate += $('input.summable').val(); 
     box += $('.multiply').val(); 
     var sum = (rate *box); 
     $('input.summable,.multiply').each(function() { sum += parseFloat(this.value); }); 
     $('#totalsum').val(sum); 
    }); 
+0

可以在此添加你的相關的HTML代碼? –

+0

我編輯過這個問題 – Salaktarus

+0

你能舉一個你想要計算什麼樣的結果的例子嗎?我發現你的方式有點奇怪。你首先在'each'中做'var sum =(rate * box);'而不是'sum + = ...'。所以'1 * 2 = 2 = 2 + 1 + 2 = 5' ?! – eisbehr

回答

0

我的建議是基於:

  • 輸入的使用,而不是KEYUP文本字段
  • 以字符串轉換爲一個號碼前綴字符串帶有加號:+「00」

我的例子:

$('input.summable,.multiply').on('input change', function (e) { 
 
    var sum = 0; 
 
    $('input.summable').each(function(i, e) { 
 
    sum += (+this.value * +$('.multiply').eq(i).val()); 
 
    }); 
 
    $('#totalsum').val(sum); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 

 
<form> 
 
    Montant: <input class="summable form-text" type="text" name="name" value size="60" maxlength="128"><br> 
 
    Device:  <select class="multiply form-select" name="money"> 
 
    <option value="5.91">BHD</option> 
 
    <option value="1.712">CAD</option> 
 
    <option value="33.245">DKK</option> 
 
</select> 
 
    <br> 
 
    Montant: <input class="summable form-text" type="text" id="edit-name" name="name" value size="60" maxlength="128"><br> 
 
    Device:  <select class="multiply form-select" name="money"> 
 
    <option value="5.91">BHD</option> 
 
    <option value="1.712">CAD</option> 
 
    <option value="33.245">DKK</option> 
 
</select> 
 
    <br> 
 
    En Dinnar: <input id="totalsum" type="text"> 
 
</form>

+0

我想動態地爲每個輸入 – Salaktarus

+0

的工作,但你有同樣的問題!爲什麼當我把:0它給我一個值? – Salaktarus

+0

@Salaktarus回答更新,你可以看一看,讓我知道嗎?謝謝 – gaetanoM

0
  1. 如果你想乘場.summable.multiply,你不需要的each環。
  2. A select沒有keyup事件,您需要change事件。

// add change event too 
 
$('.summable, .multiply').on("keyup change", function() { 
 
    var rate = parseFloat($('.summable').val()); 
 
    var box = parseFloat($('.multiply').val()); 
 
    var sum = rate * box; 
 
    
 
    // remove this 
 
    // $('.summable, .multiply').each(function() { 
 
    //  sum += parseFloat(this.value); 
 
    // }); 
 
    
 
    $('#totalsum').val(sum); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
sum: 
 
<input class="summable" type="text"> 
 
<br /> 
 

 
multi: 
 
<select class="multiply"> 
 
    <option>1</option> 
 
    <option>2</option> 
 
    <option>3</option> 
 
</select> 
 
<br /> 
 

 
total: 
 
<input id="totalsum" type="text">