【发布时间】:2016-09-04 03:03:57
【问题描述】:
我正在尝试计算数字的百分比(取自一个文本字段)并将计算值设置为另一个表单字段。为此,我尝试了以下代码,但我观察到 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>
【问题讨论】:
-
这是因为您使用的是
onkeydown,它会在您按下键之前为您提供值,因此在按下第二个0时,它会接收到第一个字符10。用onkeyup或oninput试试,你会看到它的工作原理。 -
@squint: 是的
onkeyup为我工作:) 谢谢 -
我在这里有一个观察。如果我尝试使用
onkeyup,虽然我得到了预期值,但为数字输入验证添加的函数isNumber()失败 -
哦,没注意到支票。我认为您可能需要
onkeypress来测试个性。然后,如果您仍然只获得.value中的前 2 个字符,则需要手动添加最新的字符。
标签: javascript html percentage