从输入类型=数字中删除前导零

Ale*_*nco 14 javascript validation html5 numbers input

我注意到,如果我使用<input type="number" />前导零没有被删除.我还看到了很多关于如何保持领先零的讨论.

例如,"000023"和"23"是相同的数字,我认为保持这些零没有意义.

bha*_*.cs 11

只需使用这样的正则表达式

textboxText= textboxText.replace(/^0+/, '')
Run Code Online (Sandbox Code Playgroud)

  • 它阻止小数点分隔符 (3认同)

Mos*_*ico 8

我将举一个使用用法的例子。它使用state哪个存储字段的值。但是,我认为您可以将其替换为您喜欢的任何变量。

<input type='number' value={Number(this.state.myNumber).toString()}/>

以我为例,myNumber存储年号。这样,2018例如,年份不会错误地显示为02018

  • 这不会让您输入像“24.036”这样的数字,小数点后带有前导零。 (4认同)
  • 奇迹般有效。另外,如果您正在进行任何将其转换为数字的处理,则不需要 Number() 部分。例如,在我的例子中,我对数字进行四舍五入,所以我只需要 `this.state.myNumber.toString()` (3认同)
  • 这很漂亮,直到我不得不输入 5..7.. 然后将光标移动到中间,然后是 0,以获得 0.507,但是谢谢! (2认同)

bit*_*fet 5

HTML 输入标签总是返回文本,而不是数字,甚至它的内容可以被强制转换为数字格式、日期等......

因此接下来您应该将该输入转换为实际的数字格式:

parseInt(myNum); // If you expect an integer.
parseFloat(myNum); // If you expect floating point number.
Run Code Online (Sandbox Code Playgroud)

  • 强制转换不会调用“parseInt”。与“parseInt”不同,当使用“+”或“Number”时,不需要“radix”,因为内部数字转换不会解析八进制数。“parseInt”:[虽然 ECMAScript 3 不鼓励并且 ECMAScript 5 禁止,但许多实现解释以八进制形式的前导 0 开头的数字字符串。以下可能有八进制结果,也可能有十进制结果。始终指定基数以避免这种不可靠的行为。](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/parseInt#Octal_interpretations_with_no_radix) (2认同)