我的网站有些用户在尝试将值插入设置了step属性的数字输入字段时遇到了问题。
我正在使用Django 1.6将表单呈现为HTML。
数字字段映射到具有max_digits=25和decimal_places=5的基础DecimalField模型字段,这会导致呈现以下示例HTML:
<input type="number" value="" step="0.00001" name="quantity" id="id_quantity">
我知道的step属性在FireFox中尚未得到支持,但在Opera、Chrome、Safari和IE10+中得到了支持。在所有浏览器中,除了IE10和IE11以外,一切都运行良好。在上面的例子中,在IE10和IE11中可以输入的最大范围是-227到227。如果我尝试输入比这个范围更低或更高的值,我会收到“您必须输入有效值”的错误提示,无法提交表单。
根据http://www.w3schools.com/tags/att_input_step.asp
step属性指定了一个元素的合法数字间隔。
例如:如果step="3",那么合法的数字可以是-3、0、3、6等。
因此,在我的用户示例中,他们试图输入20000作为值,在IE10和IE11中失败了。如果我的计算正确,20000落入了一个0.00001的间隔中。
对我来说,解决方案可能是从使用数字字段的所有表单中删除step属性,可以通过django表单或使用javascript实现,但我认为这将是一个非常混乱的解决方案,违背了HTML5的原则。
还有其他人遇到过类似的问题吗?我有做错了什么,还是这是IE10和IE11中的一个bug?
欢迎任何想法、评论或答案。与此同时,我将被迫向受影响的用户提供我的常规解决方案,建议他们使用可以工作的浏览器。