【发布时间】:2017-09-28 13:08:24
【问题描述】:
我有一个输入字段,用户应该只能在其中输入数字 [0-9]。
document.getElementById("integer").addEventListener('input', restrictToInteger);
function restrictToInteger() {
this.value = this.value.replace(/[^\d]/g, '');
}
<input type="number" id="integer" />
问题是这样的:当我输入一个数字(例如1234)然后按点(.),+或-输入字段的内容被浏览器自动删除(值设置为"" = 空字符串)。但为什么?将类型从 number 更改为 text 似乎可以解决问题。但是后来我失去了输入字段的向上/向下箭头功能。有什么想法吗?
【问题讨论】:
-
演示中没有发生。输入点时输入未清除
-
在chrome中验证JSFiddle,输入字段的内容没有被清除。
-
无效值不返回带输入数字的字符串
-
@JennyO'Reilly 什么浏览器消失了?
-
@JennyO'Reilly 根据 w3c 规范
[...]The value attribute, if specified and not empty, must have a value that is a valid floating-point number.[...],所以你只能得到this.value,如果它是有效的。如何报告无效输入取决于浏览器。 4.10.5.1.9 Number state (type=number).
标签: javascript html input