如何在所有浏览器中禁用formvalidation.io的整表单验证?
解决FormValidation保存草稿时禁用全表单校验的跨浏览器方案
遇到IE不支持formnovalidate的情况确实挺闹心的,不过FormValidation本身提供了官方API来处理这种场景,而且还有更彻底的绕过校验的方法,都能完美兼容所有浏览器(包括IE)。下面给你两个最靠谱的实现方案:
方案一:利用FormValidation官方API禁用/启用校验
这是最直接的方法,FormValidation内置了disableValidation()和enableValidation()方法,可以一键禁用整个表单的校验逻辑,完全不需要逐个禁用校验器。
实现步骤:
- 确保你已经初始化了FormValidation实例
- 给「保存草稿」按钮绑定点击事件,在点击时禁用校验,提交后按需恢复校验
代码示例:
<form id="myForm"> <!-- 表单字段示例 --> <input type="text" name="username" placeholder="请输入用户名" /> <button type="submit" id="submitBtn">正常提交</button> <button type="submit" id="saveDraftBtn">保存草稿</button> </form>
// 初始化FormValidation实例 const formValidator = FormValidation.formValidation( document.getElementById('myForm'), { fields: { username: { validators: { notEmpty: { message: '用户名不能为空' } // 其他校验规则 } } }, // 其他配置项 } ); // 绑定保存草稿按钮的点击事件 document.getElementById('saveDraftBtn').addEventListener('click', function() { // 禁用整个表单的校验 formValidator.disableValidation(); // 表单会正常提交,且不会触发任何校验 // 可选:如果用户之后还需要继续编辑表单,记得恢复校验 setTimeout(() => { formValidator.enableValidation(); }, 100); });
优点:完全利用官方API,逻辑清晰,不需要额外处理表单提交流程,兼容所有支持FormValidation的浏览器(包括IE)。
方案二:绕过FormValidation,直接用AJAX提交草稿
如果不想和FormValidation的校验逻辑有任何交互,这个方法更彻底——直接阻止默认的表单提交,手动收集表单数据用AJAX发送到后端,完全跳过校验流程。
代码示例:
document.getElementById('saveDraftBtn').addEventListener('click', function(e) { // 阻止默认提交行为,避免触发FormValidation的校验 e.preventDefault(); // 收集表单所有数据 const form = document.getElementById('myForm'); const formData = new FormData(form); // 用AJAX提交草稿(兼容IE的XMLHttpRequest写法) const xhr = new XMLHttpRequest(); xhr.open('POST', '/your-draft-save-url', true); xhr.onload = function() { if (xhr.status >= 200 && xhr.status < 300) { // 保存成功后的逻辑,比如提示用户 alert('草稿已保存'); } else { // 处理错误 alert('保存草稿失败,请重试'); } }; xhr.send(formData); });
优点:完全脱离FormValidation的校验逻辑,不会有任何校验触发的可能,兼容性拉满(甚至不需要依赖FormValidation的API)。
额外建议
- 如果使用的是jQuery版本的FormValidation,调用方法是
$('#myForm').formValidation('disableValidation'),逻辑和上面一致。 - 保存草稿后,记得恢复校验(方案一的
enableValidation()),避免影响用户后续的正常提交操作。 - 可以给「保存草稿」按钮加个视觉标识(比如灰色背景),让用户清楚区分正常提交和草稿保存的功能。
内容的提问来源于stack exchange,提问作者thomasonk
相关产品推荐
相关产品推荐

