[英]Remove leading zeros from input type=number
我注意到如果我使用<input type="number" />
前导零不会被删除。 我还看到很多关于如何保持前导零的讨论。
例如“000023”和“23”是相同的数字,我认为保留这些零没有意义。
只需使用这样的正则表达式
textboxText= textboxText.replace(/^0+/, '')
我将以反应用法为例。 它使用存储字段值的state
。 但是,我认为你可以用你喜欢的任何变量替换它。
<input type='number' value={Number(this.state.myNumber).toString()}/>
就我而言, myNumber
存储一年的数字。 这样, 2018
(例如)将不会错误地显示为02018
。
Html输入标签总是返回文本,而不是数字,甚至其内容也可以强制转换为数字格式,日期等...
接下来你应该将该输入转换为实际的数字格式:
parseInt(myNum); // If you expect an integer.
parseFloat(myNum); // If you expect floating point number.
为此,HTML5具有<input type="tel">
你可以试试这个。
str1 = str.replace(/^0+/,'');
试试这个 :
<!DOCTYPE html>
<html>
<body>
<input type="number" id="txtfield" /><button onclick="myFunction()">Try it</button>
<script>
function myFunction() {
var myNumber = document.getElementById("txtfield").value;
document.write(parseInt(myNumber ,10));
}
</script>
</body>
</html>
将step =“any”添加到输入标记中。 如果这不适用于您的浏览器,请将类型更改为type =“tel”
我在使用 React 时使用的技巧是公开地将数字转换为字符串。
使用value=myNumber.toString()
,而不是value=myNumber
。
这仅在输入 type="number" 时才需要,如果 type="text"` 时不需要。
如果您的变量被初始化为 null,您可以通过将 falsey 值更改为 0 来防止错误,如: value=(myNumber || 0).toString()
。
class inputHours extends React.Component {
this.state = { hours: 0};
render() {
return (
<label>Hours: could show Leading 0's</label>
<input type="number" min="0" max="24"
value={this.state.hours}
onChange={this.onChangeHours}
/>
<label>Hours: strips leading zeros</label>
<input type="number" min="0" max="24"
value={this.state.hours.toString()}
onChange={this.onChangeHours}
/>
);
}
在第一种情况下,即使您在onChangeHours
处理程序中onChangeHours
前导零,也可以通过parseInt()
强制转换回整数,并调用setState()
将没有前导零的数字保存回状态对象,告诉 react 重新-render,输入字段本身不会更新以删除任何前导零。
但是这个问题只有在输入类型设置为“数字”时才会出现。
如果设置为“文本”类型,则没有问题,前导零会按预期删除。
在这两种情况下,console.log() 显示存储在 state 中的值确实去除了前导零(允许单个 0 作为值。)
即使输入字段本身可能会显示额外的前导零。
我最好的猜测是 React 在内部看到一个整数 0 === 000,所以它不会费心更新显示??? 但是在文本字符串中,'0' != '000',所以它知道它必须更新呈现的字段。
无论如何,明显的强制似乎迫使输入字段正确更新和重新渲染。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.