KAT*_*ATq 8 html javascript reactjs
为什么setCustomValidity()在React中不起作用?我错过了什么吗?使用vanillia HTML和JS工作正常.或者还有其他方法可以轻松地制作类似的东西setCustomValidity?
反应代码:
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>
);
}
}
Run Code Online (Sandbox Code Playgroud)
没有React:
<form>
<input type="email" id="mail" name="mail">
<button onclick="test()">Submit</button>
</form>
Run Code Online (Sandbox Code Playgroud)
// JS
var input = document.getElementById("mail");
function test() {
input.setCustomValidity("test")
}
Run Code Online (Sandbox Code Playgroud)
setCustomValidity不会立即触发验证,您必须有一个表单提交事件来触发或调用checkValidity.我已经更新了你的CodePen,以展示如何在React中实现这一点,它也包含在下面.
class Form extends React.Component {
onChange(e) {
let date = new Date(Date.parse(e.target.value));
if (date > new Date()) {
e.target.setCustomValidity("Please select a date in the past.");
} else {
e.target.setCustomValidity("");
}
}
render() {
return (
<div>
<form>
<input
id="input"
type="datetime-local"
onChange={this.onChange}
/>
<button type="submit">Submit</button>
</form>
</div>
);
}
}
ReactDOM.render(<Form />, document.getElementById("root"));Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
<div id="root"></div>Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3960 次 |
| 最近记录: |