2016-05-09 3 views
4

Ich versuche, den Prozentsatz einer Zahl (aus einem Textfeld) zu berechnen und den berechneten Wert auf ein anderes Formularfeld zu setzen. Dafür habe ich den folgenden Code ausprobiert, aber ich beobachte einen Unterschied in den Schlüsselereignissen/Dezimalstellen, die js erkennt.Prozentualer Berechnungsfehler

Zum Beispiel, wenn ich 100 im ersten Eingabefeld (um den Prozentsatz von 1,75 zu berechnen), basierend auf meinem Js-Code erwarte ich 1,75, aber im zweiten Textfeld kommt es als 0,175. Ich weiß das eine sehr einfache Berechnung, aber ich kann das nicht lösen.

var reFee = document.getElementById("Estimated Referral Fee"); 
 
var LnAmt = document.getElementById("Loan Amount"); 
 
reFee.disabled = true; 
 

 
LnAmt.onkeydown = 
 
    function isNumber(evt) { 
 

 
    evt = (evt) ? evt : window.event; 
 
    var charCode = (evt.which) ? evt.which : evt.keyCode; 
 
    if (charCode > 31 && (charCode < 48 || charCode > 57)) { 
 
     return false; 
 
    } 
 
    calcPer(LnAmt.value); 
 
    } 
 

 
function calcPer(amtval) { 
 
    var pernum = 1.75; 
 
    reFee.value = (pernum/100) * amtval; 
 
}
<div class="form-group"> 
 
    <label class="control-label col-sm-2">Loan Amount</label> 
 
    <div class="col-sm-10"> 
 
    <input id="Loan Amount" placeholder="Provide Loan Amount" data-toggle="tooltip" data-original-title="Provide Loan Amount" required="required" class="form-control" name="Loan Amount" type="text" value=""> 
 
    <span class="help-block"></span> 
 
    </div> 
 
</div> 
 
<div class="form-group"> 
 
    <label class="control-label col-sm-2">Estimated Referral Fee</label> 
 
    <div class="col-sm-10"> 
 
    <input id="Estimated Referral Fee" placeholder="Your referral fee" data-toggle="tooltip" data-original-title="Your referral fee" required="required" class="form-control" name="Estimated Referral Fee" type="text" value="" disabled=""> 
 
    <span class="help-block"></span> 
 
    </div> 
 
</div>

+2

Es ist, weil Sie mit 'onkeydown', mit dem Sie den Wert gibt, bevor Sie die Taste gedrückt, so auf den zweiten' drücken 0 ' empfängt es die ersten Zeichen "10". Probieren Sie es mit 'onkeyup' oder' oninput' aus und Sie werden sehen, dass es funktioniert. –

+0

@squint: ja 'onkeyup' arbeitete für mich :) danke – krishna89

+0

Gern geschehen. –

Antwort

1

var reFee = document.getElementById("Estimated Referral Fee"); 
 
var LnAmt = document.getElementById("Loan Amount"); 
 
reFee.disabled = true; 
 

 
LnAmt.onkeyup = 
 
    function isNumber(evt) { 
 

 
    evt = (evt) ? evt : window.event; 
 
    var charCode = (evt.which) ? evt.which : evt.keyCode; 
 
    if (charCode > 31 && (charCode < 48 || charCode > 57)) { 
 
     return false; 
 
    } 
 
    calcPer(LnAmt.value); 
 
    } 
 

 
function calcPer(amtval) { 
 
    var pernum = 1.75; 
 
    reFee.value = (pernum/100) * amtval; 
 
}
<div class="form-group"> 
 
    <label class="control-label col-sm-2">Loan Amount</label> 
 
    <div class="col-sm-10"> 
 
    <input id="Loan Amount" placeholder="Provide Loan Amount" data-toggle="tooltip" data-original-title="Provide Loan Amount" required="required" class="form-control" name="Loan Amount" type="text" value=""> 
 
    <span class="help-block"></span> 
 
    </div> 
 
</div> 
 
<div class="form-group"> 
 
    <label class="control-label col-sm-2">Estimated Referral Fee</label> 
 
    <div class="col-sm-10"> 
 
    <input id="Estimated Referral Fee" placeholder="Your referral fee" data-toggle="tooltip" data-original-title="Your referral fee" required="required" class="form-control" name="Estimated Referral Fee" type="text" value="" disabled=""> 
 
    <span class="help-block"></span> 
 
    </div> 
 
</div>