【发布时间】:2017-11-22 08:37:58
【问题描述】:
我有一个输入 type="number" 的表单,这在 IE11 中给我带来了问题:一些值被接受,而另一些则不被接受,显然是随机的。
代码如下:
<input type="number" style="text-align:right" min="1.00" placeholder="1,00" name="value-name" id="value" step="0.01" title="title" required/>
出于某种原因,IE11 接受 9.2、9.4、9.5、9.6、9.7、9.9,但拒绝 9.3 和 9.8。这只是一个例子,它发生在所有数字上,我不明白它背后的原因。此外,一些数字在几分钟前被接受了,但现在不再是了。
除此之外,之前的所有值都应该无效,因为我在欧洲,, 是小数部分的分隔符,而不是 .。相反,当我使用 , 时,IE 不会将其转换为 .,并且当通过 POST 传递给 PHP 时,PHP 的 is_numeric() 返回 false!
我怎样才能完成所有这些工作?谢谢
【问题讨论】:
-
作为一种解决方法,您可以在服务器端用点替换逗号
return preg_replace("/[^0-9\\.]/", null, str_replace(",", ".", $string)); -
另外,我认为你应该看看这篇关于 SO - stackoverflow.com/questions/15303940/… 的帖子
-
我已经在服务器端添加了解决方法,并且阅读了您链接的帖子,我决定通过将
formnovalidate添加到我的表单并用 Javascript 编写一个函数来实施检查。我还决定将点作为十进制分隔符,因为我在网页中显示的值也使用点。但是现在我有另一个问题,因为如果我以“6.5”的形式编写,然后我在 Javascriptdocument.getElementById("value").value中执行,Firefox 返回一个空字符串,因为如果我用逗号作为十进制写它,它只会返回数字分隔符。 -
好的,通过在表单中添加属性
lang="en"似乎解决了最后一个问题
标签: php html forms internet-explorer