2016-09-14 86 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">