【发布时间】:2013-11-08 12:19:08
【问题描述】:
我正在尝试使用 HTML5 <input type="number"> 元素对数字字段进行 Javascript 客户端验证。还有服务器端验证,所以我们不要为此大吵大闹... ;)
我希望提供三种状态级别的验证:绿色表示定义范围内的有效数字,黄色表示超出范围的数字或空字段,红色表示非数字输入。
我的问题是 IE11(我相信 IE10)似乎为非数字输入返回了一个空白的 .value 属性。也就是说,如果我在框中输入abc,.value 就是""。这让我无法区分黄色(空白)和红色(垃圾)。
我知道新的 .valueAsNumber 属性的存在,但这并不能完全帮助我,因为我无法区分其他浏览器上的空和 IE10/11 上的非数字(.value 为空,@ 987654328@ 是NaN)。
有人解决了这个问题吗?我不想求助于跟踪按键,我想支持旧版浏览器(回到 IE8)恢复到type="text" 并且没有.valueAsNumber。提前谢谢...
编辑:只是为了澄清(希望如此),我的问题是 IE10/11 中 .value 和 .valueAsNumber 的输出不允许我区分无输入和非数字输入。我希望能够在没有浏览器嗅探和回退到type="text" 的情况下区分这两种情况。
【问题讨论】:
-
为什么不考虑从允许 blank 更改为使用超出您范围的某些 default,例如
0,您可以检测到它并使其行为不同,那么这可以始终将所有内容转换为 Number 以便您始终只能使用 Numbers? (显然,您仍然应该进行服务器端验证)
标签: javascript html internet-explorer validation input