为什么我不能在HTML5号码字段中输入500?

Dan*_*ray 6 html forms validation html5 input

我的HTML5号码字段一直出现奇怪的意外验证错误.这是我的HTML代码:

<input type="number" name="width" maxlength="5" placeholder="Width" value="733.95591182365" />&nbsp;Width<br />
Run Code Online (Sandbox Code Playgroud)

当我输入500并提交表格时,我收到错误:"请输入有效值.两个最接近的有效值是499.95591182365和500.95591182365."

我已经解决了这个问题.问题是这个value="733.95591182365".我已将PHP代码更改为将小数舍入为整数,以便只能将整数回显到数字字段中.现在我只在输入小数时才收到错误,这没关系.

Han*_*nam 17

在使用时,您需要具有step="any"属性type="number"

<form>
  <input step="any" type="number" name="width" maxlength="5" placeholder="Width" value="733.95591182365" />
</form>
Run Code Online (Sandbox Code Playgroud)


Ori*_*iol 8

对于数字输入,

步骤比例因子是1.默认步骤为1

然后,由于没有step属性,允许的值步骤1×1 = 1:

  1. 如果该属性不存在,则允许值步长默认步长乘以步长比例因子.

步基地将是733.95591182365:

  1. 如果元素具有valuecontent属性,并且应用算法将字符串转换为数字的结果为valuecontent属性的值不是错误,则返回该结果并中止这些步骤.

因此,

约束验证:当元素具有允许值步长时,应用算法将字符串转换为数字到字符串给出的字符串的 结果是一个数字,并且从步长中减去的数字不是一个整数允许值步长的倍数,该元素遭受步骤不匹配.

由于733.95591182365 - 500 = 233.95591182365不是倍数1,因此违反了该约束.

如果需要其他步骤,请指定step属性.如果您不想要任何步骤,请使用step = "any".