为什么setCustomValidity()
不能在React中工作?我错过了什么吗?用vanillia HTML和JS可以正常工作。或者有其他方法可以轻松地制作类似setCustomValidity
的东西?
React代码:
class Form extends React.Component {
formVal(e) {
e.target.setCustomValidity("Test_1");
}
formVal2() {
let inpt = document.getElementById("input");
inpt.target.setCustomValidity("TEST_2");
}
render() {
return (
<div>
<form>
<input
id="input"
type="datetime-local"
onBlur={this.formVal}
/>
</form>
<button onClick={this.formVal2}>Click </button>
</div>
);
}
}
CodePen - React
无React:
<form>
<input type="email" id="mail" name="mail">
<button onclick="test()">Submit</button>
</form>
// JS中
var input = document.getElementById("mail");
function test() {
input.setCustomValidity("test")
}
4条答案
按热度按时间gcuhipw91#
setCustomValidity
不会立即触发验证,您必须有一个表单提交事件来触发它,或者调用checkValidity
。我已经更新了您的CodePen,以展示如何在React中实现这一点,下面也包括了它。第一个
cwtwac6a2#
如果您想要显示空的必填字段的验证,您应该将setCustomValidity设置为onInvalid,如下所示:
如果您使用的是这样的打字稿:
如果要处理值的验证,可以按如下方式添加:https://stackoverflow.com/a/45695707/6912349
irtuqstp3#
你好,这里是你需要做的。
我的意思是你不必把所有的都加进去,只加你关心的那些就行了
flseospp4#
简短回答: