【发布时间】:2011-11-21 11:56:06
【问题描述】:
我有两个提交按钮返回,继续。单击“返回”时,我应该怎么做才能禁用客户端验证。我试图将cancel class 添加到按钮属性,但它接缝没有帮助。
UPD。实际上这是有效的cancel class。但是如果你动态添加它(通过javascript),它接缝不起作用。
【问题讨论】:
标签: asp.net-mvc button submit unobtrusive-validation
我有两个提交按钮返回,继续。单击“返回”时,我应该怎么做才能禁用客户端验证。我试图将cancel class 添加到按钮属性,但它接缝没有帮助。
UPD。实际上这是有效的cancel class。但是如果你动态添加它(通过javascript),它接缝不起作用。
【问题讨论】:
标签: asp.net-mvc button submit unobtrusive-validation
我为某些按钮附加了一个事件处理程序,它改变了该特定表单上验证器对象的设置。
$(".jsCancel").click(function (e) {
$(e.currentTarget).closest("form").validate().settings.ignore = "*"
});
这在 MVC3 中对我来说就像一个魅力。
我不知道这是否对您特别有帮助,但是由于我使用 ajax 表单,因此每次替换 ajax 表单的内容时,我都必须通过使用事件 ajax 成功将事件附加到这些按钮。重新解析表单并将事件附加到取消按钮的完整代码是:
$(document).ajaxSuccess(function (event, xhr, settings) {
var $jQval = $.validator, adapters, data_validation = "unobtrusiveValidation";
$jQval.unobtrusive.parse(document);
$(".jsCancel").click(function (e) {
$(e.currentTarget).closest("form").validate().settings.ignore = "*"
});
});
【讨论】:
使用 JavaScript 劫持按钮单击以提交表单。
这是 jQuery 的一个很好的例子:
$("#MyButton").click(function(e) {
//submit your form manually here
e.preventDefault();
});
【讨论】:
这确实是对tugberk答案的评论,但是cmets并没有很好地显示代码示例。
某些浏览器版本不喜欢“preventDefault()”功能。在被这个咬了几次之后,我添加了一个简单的实用函数:
//Function to prevent Default Events
function preventDefaultEvents(e)
{
if (e.preventDefault) {
e.preventDefault();
} else {
e.returnValue = false;
}
}
你这样称呼它来代替“preventDefault”:
$("#CancelButton").on("click", function(event) {
preventDefaultEvents(event);
return false;
});
【讨论】:
您可以使用“取消”css 类。
例如:<input type="submit" value="Cancel" name="Cancel" class="cancel" />
JQuery.Validate 在下面的代码中处理其余部分:
// allow suppresing validation by adding a cancel class to the submit button
this.find("input, button").filter(".cancel").click(function() {
validator.cancelSubmit = true;
});
【讨论】: