【问题标题】:Input attribute type="number" doesn't work in IE11. How can I get around this?输入属性 type="number" 在 IE11 中不起作用。我怎样才能解决这个问题?
【发布时间】:2021-07-14 22:36:01
【问题描述】:

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

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

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

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

  • 50 是一个有效值
  • 示例!50 是无效值
  • 50个例子!是无效值

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

  • 50 是一个有效值
  • 示例!50 是无效值
  • 50个例子!是一个有效值

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

【问题讨论】:

  • 您好,请问您的问题是否已解决?我下面的回答对解决问题有帮助吗?

标签: html forms input cross-browser internet-explorer-11


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    能够用这个正则表达式解决问题:

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

    【讨论】:

      猜你喜欢
      • 2013-10-24
      • 1970-01-01
      • 2020-11-28
      • 2019-11-21
      • 2019-04-10
      • 1970-01-01
      • 2012-03-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多