javascript - 仅在表单验证时触发 ajax 调用
问题描述
我正在为通过 ajax 提交的表单使用引导表单验证器脚本。问题是即使验证失败,脚本也会被提交
这是验证码
(function() {
'use strict';
window.addEventListener('load', function() {
// Get the forms we want to add validation styles to
var forms = document.getElementsByClassName('needs-validation');
// Loop over them and prevent submission
var validation = Array.prototype.filter.call(forms, function(form) {
form.addEventListener('submit', function(event) {
if (form.checkValidity() === false) {
event.preventDefault();
event.stopPropagation();
}
form.classList.add('was-validated');
}, false);
});
}, false);
})();
如果我在此下方放置一个函数来执行提交表单的 ajax 调用,即使表单未经过验证也是如此。
这是表单代码
<div class="form-group text-white needs-validation" novalidate>
<form method="POST" id="rform" action="javascript:return">
解决方案
您错过了添加needs-validation
Javascript 代码所需的类和novalidate
<form method="POST" id="rform" action="" novalidate class="needs-validation">
Name: <input type="text" name="name" required> <br>
ID: <input type="text" name="registration_id" min="3"> <br>
<input type="submit" name="submit">
</form>
<script>
(function() {
'use strict';
window.addEventListener('load', function() {
// Get the forms we want to add validation styles to
var forms = document.getElementsByClassName('needs-validation');
// Loop over them and prevent submission
var validation = Array.prototype.filter.call(forms, function(form) {
form.addEventListener('submit', function(event) {
if (form.checkValidity() === false) {
event.preventDefault();
event.stopPropagation();
}
form.classList.add('was-validated');
}, false);
});
}, false);
})();
</script>
推荐阅读
- javascript - 关于 concole.log 中显示错误时的行为
- python - 如何在列表列表中生成随机数
- python - 如何检查处理 Celery 任务的队列
- bash - 用于取消当前(以及所有后续)脚本的 Bash 退出选项
- node.js - “ReplyError: ERR unkown command 'json.set' ? 使用 redis rejson, google oauth
- amazon-web-services - 具有定义持续时间的现场实例和多种实例类型的 AWS Auto Scaling 组
- unity3d - 全息远程无法统一捕捉手势
- python - 将字典理解的每次迭代存储在新的嵌套字典中
- java - java如何使用服务帐户将文件夹创建到共享驱动器中进行身份验证
- reactjs - 你可以创建一个 react redux store 拦截器来监视一个属性吗?