满足验证后自动跳转页面(提交表单)这本来就是符合预期的行为呀,按你的需求,表单就提交不出去了。
当然有办法,在 form 的 submit 事件里面阻止默认行为(成功时提交表单)就好了,未通过验证的是不会进入到 submit 事件的。
const form1 = document.querySelector('#form1');
form1.addEventListener('submit', function (ev) {
ev.preventDefault();
console.log('通过验证');
});
如果你想要手动验证表单/输入框(任何时候),可以使用表单/输入框的方法("checkValidity"/"reportValidity")
console.log(myform.checkValidity()); // return boolean , true if form is valid, false if anything is invalid in the form
console.log(myform.reportValidity()); // will throw error explaining why `form.checkValidity()` returning false
* "javascript - How to use HTML form.checkValidity()? - Stack Overflow" (https://link.segmentfault.com/?enc=xIAx7v3LCP7BiZXkIw2ezQ%3D%3D.Kooxgt%2Bk2DIZ8gTDLtU%2FPGhUecMRJYRf3Ktx0%2BeMza96E%2F%2B0eduJsuNidCx7ow5Z)
* "HTMLFormElement: reportValidity() method - Web APIs | MDN" (https://link.segmentfault.com/?enc=6cW4lggmwsHtdGczxg6xDw%3D%3D.RBrh1m%2BMN9U7PHEkaoOQkyCqt9EoKBTfH4wE4RY1Hl%2FJZ0ZdNFlWfcwUuB3ySR9ZNFPs9yCd7iv1een%2BYLKEPDXax3W4YTTD5v7gxztrKrA%3D)
* "HTMLInputElement: checkValidity() method - Web APIs | MDN" (https://link.segmentfault.com/?enc=BWtLnRO%2FVYsnrIqqKP7%2BEQ%3D%3D.wPJadAmumpBdU3meCltP6THsR9c9pGnucfQxDxzCDLFEJ79viVtcox80SEtqSsUuYq2lS67igcvJhGCUa6%2B2cr086ATfqf03EU2dSoSp8QE%3D)