【问题标题】:Is there a way to suppress scientific notation for <input type="number">?有没有办法抑制 <input type="number"> 的科学记数法?
【发布时间】:2016-01-12 23:46:06
【问题描述】:

我想输入带有&lt;input&gt; 元素的最多八个小数点的数字。但是,如果我有一个 &lt;input type="number" step="0.00000001"&gt; 并使用输入元素上的向上/向下箭头(在 Chrome 上;这里是 jsfiddle),那么我会得到小数字的科学记数法:

如果我输入 5,然后按箭头键,那么科学记数法就会被抑制:

有没有办法让浏览器将1e-8 显示为0.000000001

另外,如果数字足够小,我会遇到浮点舍入错误吗?

&lt;input type="number" step="0.00000001"&gt;

【问题讨论】:

标签: html floating-point html-input scientific-notation


【解决方案1】:

<input oninput='precise(this)' type="number" step="0.00000001">

<script>
  function precise(elem) {
    elem.value = Number(elem.value).toFixed(8);
  }
</script>

您可以根据需要将toFixed 参数更改为所需的小数位数。我希望这会有所帮助!

【讨论】:

  • 你可以用oninput=precise(this)传递特定的input元素,然后做function precise(el) { el.value = Number(el.value).toFixed(8); }
【解决方案2】:

这是基于 StardustGogeta 的 answer 的变体:

<input oninput="this.value=Number(this.value).toFixed(this.step.split('.')[1].length)" type=number step="0.00000001">

【讨论】:

  • 当您绑定到oninput 时,它会在您单击输入字段旁边的箭头时起作用,但它不允许您输入。如果您将oninput 替换为onclick,它可以让您输入并且只有在您使用箭头时才会修改内容。
猜你喜欢
  • 2013-07-18
  • 2020-05-31
  • 2017-03-13
  • 1970-01-01
  • 1970-01-01
  • 2021-09-30
  • 1970-01-01
  • 2011-11-21
相关资源
最近更新 更多