2016-05-09 136 views
4

我想計算一個數字的百分比(取自一個文本字段)並將計算值設置爲另一個表單字段。爲此,我嘗試了下面的代碼,但我正在觀察js正在檢測的關鍵事件/小數位的不匹配。百分比計算錯誤

例如,如果我在第一個輸入字段中提供100(以計算1.75的百分比),基於我的js代碼,我期望得到1.75,但在第二個文本字段中它將達到0.175。 我知道這是一個非常簡單的計算,但我無法解決這個問題。

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

這是因爲使用了'onkeydown',它給你的價值,你按下鍵之前,所以在按下第二個'0' ,它接收到第一個字符「10」。嘗試使用'onkeyup'或'oninput',你會看到它的工作。 –

+0

@squint:是'onkeyup'爲我工作:)謝謝 – krishna89

+0

不客氣。 –

回答

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>