【问题标题】:Percentage calculation error百分比计算错误
【发布时间】: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。用onkeyuponinput 试试,你会看到它的工作原理。
  • @squint: 是的onkeyup 为我工作:) 谢谢
  • 我在这里有一个观察。如果我尝试使用onkeyup,虽然我得到了预期值,但为数字输入验证添加的函数isNumber() 失败
  • 哦,没注意到支票。我认为您可能需要onkeypress 来测试个性。然后,如果您仍然只获得.value 中的前 2 个字符,则需要手动添加最新的字符。

标签: javascript html percentage


【解决方案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>

【讨论】:

    猜你喜欢
    • 2016-06-15
    • 1970-01-01
    • 2011-06-01
    • 2021-01-10
    • 2021-05-05
    • 2018-04-14
    • 1970-01-01
    相关资源
    最近更新 更多