输入属性 type="number" 在 IE11 中不起作用。我该如何解决这个问题?

Input attribute type="number" doesn't work in IE11. How can I get around this?

我有一个简单的表单,其中一个输入字段的类型为 number

<input type="number" step="0.5" required/>

这适用于大多数浏览器。但是在 Internet Explorer 11 上,type="number" 的验证存在缺陷。它只允许数值,但是在输入数字后验证似乎停止工作。

例如,在大多数浏览器中,type="number" 的验证工作如下:

而在 Internet Explorer 中它是这样工作的:

我如何确保在 Internet Explorer 的输入字段中只允许使用数字值(同时还允许 step="0.5" 继续工作 - 即 10.5 仍然有效,即使“.”是非数字的) )

我可以在 IE 11 中重现这个问题。要解决这个问题,我们可以添加正则表达式。示例代码如下所示,它只允许一位小数并且在 IE 11 中运行良好:

<input type="number" step="0.5" required oninput="this.value = this.value.replace(/[^0-9.]/g, '').replace(/(\..*?)\..*/g, '');" />

能够解决此正则表达式的问题:

~r/^\d+(?:\.[05])?$/