【发布时间】:2015-05-26 18:28:37
【问题描述】:
当用户将表单另存为草稿时,我试图阻止所有验证规则发生。我的按钮是
<input id="saveDraft" type="button" value="Save As Draft" class="btn btn-default"/>
我已经尝试添加novalidate,以及formnovalidate 和class="cancel"
我只是希望用户能够保存草稿,而无需填写所有必填字段,而无需使用繁重的 javascript 来删除所有验证属性。
编辑:.js 文件
submitButton.addEventListener("click", function () {
myDropzone.processQueue();
if (myDropzone.files.length == 0) {
$('form').validate({
onsubmit: false
});
$('form').submit();
};
});
【问题讨论】:
-
只需将
class="cancel"添加到提交按钮将绕过jQuery Validation 插件。但是,这是一个有争议的问题,因为无论如何 jQuery Validate 插件都会忽略type="button"。click处理程序中的.submit()只是通过将按钮变为提交来触发验证插件。您也不能调用.validate(),因为unobtrusive-validation插件已经在为您调用该方法。我的建议是完全摆脱您的click事件监听器,将按钮更改为type="submit"并再次尝试class="cancel"。 -
顺便说一句,
novalidate属性仅用于禁用 HTML5 浏览器验证。 -
据我了解,您是说
<input type="button"应该足以阻止此表单验证,但是,这不是正在发生的事情,因为验证错误阻止了提交。 -
您正在使用
click处理程序创建自己的问题。您正在使用type="button"并强制它提交表单......这反过来又会激活验证。阅读我编辑的评论。请参阅:jsfiddle.net/p4bdevok 或 jsfiddle.net/p4bdevok/1 -
我更喜欢你的方式。提交按钮的问题是,表单最终可以在 dropzone.js 完成将文件上传到服务器之前保存,对吗?这就是为什么我在
processQueue()方法运行时阻止提交表单的原因。有其他方法来处理这个问题吗?
标签: jquery asp.net-mvc jquery-validate unobtrusive-validation