删除 mvc 中的客户端验证错误
removing client side validation errors in mvc
我有一个 mvc 表单,用户可以在其中添加动态元素。我正在使用 MVC 的非干扰性验证。
我还有两个按钮,一个保存为草稿,另一个提交。提交按钮正确触发验证,包括添加的动态元素。
但是,如果单击另存为草稿,我很难尝试在客户端清除验证属性 data-val-*。
无论我做什么,我永远无法触发表单提交来调用我的操作方法。显然只有这样我才能处理禁用服务器端验证。
我试过以下方法
</p>
<pre><code> $("#myform").submit(function () {
---
//some code to check which submit button was clicked
//if save as draft was clicked, proceed below
---
var settings = $("#myform").validate().settings;
for (var ruleIndex in settings.rules) {
delete settings.rules[ruleIndex];
$('#myform').clearErrors();
//$("#myform").removeData("validator")
// .removeData("unobtrusiveValidation");
$("select").removeAttr("data-val-required");
$("select").removeAttr("data-val-number");
$("input").removeAttr("data-val-required");
if ($("#myform").valid()) {
alert("valid"); //I can reach here indicating that the form is valid at this point.But still my action method is not called.
}
}
$.fn.clearErrors = function () {
$(this).each(function () {
$(this).find(".field-validation-error").empty();
$(this).find(".input-validation-error").removeClass("input-validation-error");
$(this).trigger('reset.unobtrusiveValidation');
});
};
尝试按照中所述在 "save as draft" 按钮上添加 formnovalidate 属性
Documentation for jqueryvalidation.
示例:
<input type="submit" formnovalidate name="saveAsDraft" value="Cancel">
如果您使用的是旧版本,您可能必须使用 class="cancel" 属性而不是 formnovalidate 属性。
示例:
<input type="submit" class="cancel" name="saveAsDraft" value="Cancel">
我有一个 mvc 表单,用户可以在其中添加动态元素。我正在使用 MVC 的非干扰性验证。 我还有两个按钮,一个保存为草稿,另一个提交。提交按钮正确触发验证,包括添加的动态元素。
但是,如果单击另存为草稿,我很难尝试在客户端清除验证属性 data-val-*。
无论我做什么,我永远无法触发表单提交来调用我的操作方法。显然只有这样我才能处理禁用服务器端验证。
我试过以下方法
</p>
<pre><code> $("#myform").submit(function () {
---
//some code to check which submit button was clicked
//if save as draft was clicked, proceed below
---
var settings = $("#myform").validate().settings;
for (var ruleIndex in settings.rules) {
delete settings.rules[ruleIndex];
$('#myform').clearErrors();
//$("#myform").removeData("validator")
// .removeData("unobtrusiveValidation");
$("select").removeAttr("data-val-required");
$("select").removeAttr("data-val-number");
$("input").removeAttr("data-val-required");
if ($("#myform").valid()) {
alert("valid"); //I can reach here indicating that the form is valid at this point.But still my action method is not called.
}
}
$.fn.clearErrors = function () {
$(this).each(function () {
$(this).find(".field-validation-error").empty();
$(this).find(".input-validation-error").removeClass("input-validation-error");
$(this).trigger('reset.unobtrusiveValidation');
});
};
尝试按照中所述在 "save as draft" 按钮上添加 formnovalidate 属性 Documentation for jqueryvalidation.
示例:
<input type="submit" formnovalidate name="saveAsDraft" value="Cancel">
如果您使用的是旧版本,您可能必须使用 class="cancel" 属性而不是 formnovalidate 属性。 示例:
<input type="submit" class="cancel" name="saveAsDraft" value="Cancel">