我有一个输入类型编号,带有最小,最大,步长;
在文档https://developer.mozilla.org/ru/docs/Web/HTML/Element/Input/number中 说
此输入可接受的最小值。如果元素的值小于此值,则该元素将无法通过约束验证。如果为min指定的值不是有效数字,则输入没有最小值。
此值必须小于或等于max属性的值。
但是实际上似乎min属性也改变了我输入的基本值,总的来说,由于用户输入而导致的增量值是错误的。
您可以尝试以下方法:
工作正常(没有min属性):https://jsfiddle.net/utqLrveh/7/
工作错误(具有min属性):https://jsfiddle.net/utqLrveh/6/
JavaScript部分
var e=document.getElementById('basic');
e.setAttribute('value',16);
e.step=32;
e.max=59;
HTML部分(使用min属性会出错)
<input id="basic" type="number" value="0" min="5">
(可以正常工作,没有min属性)
<input id="basic" type="number" value="0">
没有最小值,第一个用户增量返回48(value = 16 + step = 32); 使用min时,第一个用户增量返回37(̶v̶a̶l̶u̶e̶=̶1̶6̶min = 5 + step = 32);
答案 0 :(得分:0)
这种行为的原因(据我了解)是,一旦您设置了min
值(例如5
),将来的值(将在<input>
之后获得) 。无论是否使用默认的value
。
换句话说,如果您将value
设置为16,并且范围为[5,59],步长为32,则<input>
只能获取值,使得任何值{您可以在val
字段中获得{1}}:<input>
,其中n是距val = input.min + n * input.step
的增量数(即,它可以取的最小值)
因此,根据您的情况,您最终将拥有一个input.min
如下的值范围(因为[5, 37]
高于69 = 5 + 3 * 32
,因此任何59
5 + 32 * n
。