<form method="post" action="#">
<input type="text" pattern=".{5,}" name="el" oninvalid="setCustomValidity('Must Be Longer Than 5 Characters')" oninput="setCustomValidity('')"/>
<input type="submit"/>
</form>
因此,没有
oninput="setCustomValidity('')"
部分,无论输入内容如何,都将永远不会提交表单,因为它将始终显示“必须超过5个字符”错误,但是通过使用oninput="setCustomValidity('')"
一切都很好,但是我没有似乎了解oninvalid和oninput如何一起工作,如果我将输入的自定义有效性设置为''
,那么每次用户按下键时,oninvalid
部分如何都不会被覆盖?我认为这与
setCustomValidity()
的工作方式有关,不? 最佳答案
输入超过5个字符,然后单击“提交”,它将起作用。它仅在无效事件至少触发一次的情况下才起作用。
<form method="post" action="#">
<input type="text" pattern=".{5,}" name="el"
oninvalid="setCustomValidity('Must Be Longer Than 5 Characters');"/>
<input type="submit"/>
</form>
一些基本知识,请参考mdn:
不满足约束条件时触发
oninvalid
。setCustomValidity
方法用于设置验证结果;空字符串表示已满足约束,任何其他字符串表示存在错误。原因:
-触发
oninvalid
事件后,您可以使用setCustomValidity
将结果设置为非空字符串。-现在,即使在(更改输入值)满足
pattern
条件之后,验证的结果也是非空字符串。-在代码
oninvalid="setCustomValidity('...')" oninput="setCustomValidity('')"
中,每次输入后清除结果。关于javascript - html setCustomValidity oninvalid和oninput说明,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39514306/