2016-09-14 2 views
0

Ich erstellt eine Multi-Input-Wechselkurs, ich möchte die Summe der multiple Eingabe Textfield berechnen * Option wählen Ich fand die Lösung, aber das Problem, wenn ich 0 setzen er las wie 1:Jquery Summe von zwei multiplizierte Feld

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

können Sie Ihre entsprechenden HTML-Code hier hinzufügen? –

+0

Ich habe die Frage bearbeitet – Salaktarus

+0

Können Sie uns ein Beispiel geben, was Sie berechnen möchten und was das Ergebnis sein soll? Ich fand deinen Weg ein bisschen komisch. Sie tun zuerst 'var sum = (Rate * box);' und dann 'sum + = ...' in Ihrem 'each'. Also '1 * 2 = 2 = 2 + 1 + 2 = 5' ?! – eisbehr

Antwort

0

Mein Vorschlag basiert auf:

  • Verwendung Eingang statt keyup für Textfeld
  • , um eine Zeichenfolge in eine Zahl als Präfix die Zeichenfolge zu konvertieren mit einem Pluszeichen wie: + "00"

Mein Beispiel:

$('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

Ich möchte dynamisch sein und für jeden Eingang – Salaktarus

+0

seine Arbeit, aber Sie haben das gleiche Problem! warum, wenn ich lege: 0 gib mir einen Wert ?? – Salaktarus

+0

@Salaktarus Antwort aktualisiert, können Sie einen Blick und lassen Sie es mich wissen? Vielen Dank – gaetanoM

0
  1. Wenn Sie Feld multiplizieren wollen .summable mit .multiply, müssen Sie nicht die each Schleife benötigen.
  2. A select nicht keyup Ereignis, Sie brauchen change Ereignis hier.

// 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">

Verwandte Themen