validity.valid如何工作?

15

我尝试将一个输入数字(html)设置为仅为正数,并找到了这个好的解决方案:

    <input type="number" name="test_name" min="0" oninput="validity.valid|| 
    (value='');">

有人可以告诉我oninput="validity.valid||(value='');是如何工作的吗?它如何将输入限制为仅正数。

谢谢!


1
完整指南请参阅:https://developer.mozilla.org/zh-CN/docs/Web/Guide/HTML/HTML5/Constraint_validation - Blue
2个回答

9
min="0" 只接受大于零的数字。所以当用户输入值(oninput)时,它要么是有效的(validity.valid),要么(||)该值被替换为空字符串 (value='')。


编辑:

validity.valid 是 falsy 的,因为它遵循 文档 中的rangeUnderflow属性要求:

"如果该值小于由 min 属性指定的最小值"


2
那么,validity.valid 与约束条件 min=0 有什么关系吗? - Juan Pablo
1
是的,正如我们可以在这里看到的那样,在rangeUnderflow中,如果值小于min属性指定的最小值,则ValidityState为假。 - Maarti
1
哦,我现在明白了。非常感谢你,兄弟,你帮了我很多。 - Juan Pablo

2

当用户在输入框中输入文本时,会触发此事件。

仅当显示的文本更改时才会调用此事件,因此当用户按下不可显示的键时不会调用此事件。

所以它会检查validity.valid属性来进行验证。


我可以问你吗?你在哪里看到这样的事情?@JuanPablo - Yoarthur
我在这篇帖子中看到了它链接 - Juan Pablo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接