输入类型编号的属性“ min”无效

时间:2019-05-20 13:21:06

标签: javascript html

我有一个输入类型编号,带有最小,最大,步长;

在文档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);

1 个答案:

答案 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