我有一个已minlength
定义的文本输入。当用户输入文本时,输入的validity
状态会立即更新。如果我更改代码中的值,则有效性状态将重置为有效——即使违反了约束,validity.valid
也是如此。
const input = document.getElementById("input");
const label = document.getElementById("label");
document.getElementById("rightButton").addEventListener("click", evt => {
input.value = "ABCDE";
});
document.getElementById("wrongButton").addEventListener("click", evt => {
input.value = "AB";
});
setInterval(() => label.innerHTML = input.validity.valid, 250);
Run Code Online (Sandbox Code Playgroud)
<input type="text" id="input" minlength="4">
<span id="label"></span>
<hr/>
<button id="rightButton">Make It Right</button>
<button id="wrongButton">Make It Wrong</button>
Run Code Online (Sandbox Code Playgroud)
为什么在分配给 时不运行自动有效性检查input.value
?这是在某处记录的吗?有没有我可以调用的方法来触发浏览器的内部验证过程,而不必自己进行检查和调用setCustomValidity
?