我注意到如果使用
例如,"000023" 和 "23" 是相同的数字,我认为保留这些零是没有意义的。
<input type="number" />
,前导零将不会被删去。我也看到很多关于保留前导零的讨论。例如,"000023" 和 "23" 是相同的数字,我认为保留这些零是没有意义的。
<input type="number" />
,前导零将不会被删去。我也看到很多关于保留前导零的讨论。state
存储字段的值。但是,您可以用任何您喜欢的变量来替换它。myNumber
存储一个年份。这种方法可以避免像02018
这样的年份(例如2018年)被错误显示。
<input type='number' value={Number(this.state.myNumber).toString()}/>
this.state.myNumber.toString()
。 - Michael Aaron Wilson24.036
这样的数字,即小数点后有前导零的数字。 - HVenom只需使用如下的正则表达式即可
textboxText= textboxText.replace(/^0+/, '')
+'00022'.toString()
这样的东西呢? - Xotic750HTML输入标签总是返回文本,而不是数字,即使其内容可以被强制转换为数字格式、日期等。
因此,接下来您应该将该输入转换为实际的数字格式:
parseInt(myNum); // If you expect an integer.
parseFloat(myNum); // If you expect floating point number.
+'00022'.toString()
都可以工作。 - Xotic750parseInt
时没有提供radix
参数,可能会存在安全隐患。 - Xotic750parseInt
。与 parseInt
不同,使用 +
或 Number
时不需要 radix
,因为内部数字转换不会解析八进制数。parseInt
: 虽然 ECMAScript 3 不鼓励使用,ECMAScript 5 禁止使用以 0 开头的数字字符串作为八进制数。以下内容可能具有八进制结果或十进制结果。始终指定基数以避免此不可靠行为。 - Xotic750在您的输入标记中添加step="any"。 如果在您的浏览器上无法正常工作,请将类型更改为type="tel"
type="tel"
是正确的选择! - Nebulosar试试这个:
<!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>
在使用React时,我使用的技巧是将数字明确地转换为字符串。
使用value=myNumber.toString()
而不是value=myNumber
。
只有当输入类型为"number"时才需要这样做,如果类型为"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
处理程序中剥离前导零,通过parseInt()
强制将其转换回整数,并调用setState()
将不带前导零的数字保存回状态对象,告诉React重新渲染,输入字段本身也不会更新以删除任何前导零。parseFloat()
,否则小数点后面的零可能会被删除,从而导致错误。 str1 = str.replace(/^0+/,'');