简单的乘法计算器不保留十进制值

时间:2018-08-24 07:04:16

标签: javascript html converter calculator multiplication

这是一个简单的乘法计算器,键入时会自动将逗号添加到成千上万的单独组中。但是,它不接受十进制值,例如1,778。 23 。直接将其粘贴到字段中,将其复制粘贴即可,但是无法键入。任何解决方案将不胜感激。

function calculate() {
  var myBox1 = updateValue('box1');
  var myBox2 = updateValue('box2');
  var myResult = myBox1 * myBox2;
  adTextRes('result', myResult)
}

function updateValue(nameOf) {
  var inputNo = document.getElementById(nameOf).value;
  var no = createNo(inputNo);
  adTextRes(nameOf, no);
  return no;
}

function adTextRes(nameOf, no) {
  var asText = String(no).replace(/\B(?=(\d{3})+(?!\d))/g, ",");
  document.getElementById(nameOf).value = asText;
}

function createNo(textin) {
  return Number(textin.replace(/,/g, ""));
}
<table width="80%" border="0">
  <tr>
    <th>Box 1</th>
    <th>Box 2</th>
    <th>Result</th>
  </tr>
  <tr>
    <td><input id="box1" type="text" oninput="calculate()" /></td>
    <td><input id="box2" type="text" oninput="calculate()" /></td>
    <td><input id="result" /></td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
  </tr>
</table>

1 个答案:

答案 0 :(得分:1)

问题出在.env中:

null

当转换为createNo时,尾随的时间段将被丢弃。不过,一开始就不需要这样的转换-只需将其保留即可,它将按预期运行:

return Number(textin.replace(/,/g, ""));

要防止输入多个小数点,可以在同一函数中使用另一个Number

function createNo(textin) {
  return textin.replace(/,/g, "");
}

replace
.replace(/(\.\d*)\./, '$1')