禁用为特定提交按钮启用不显眼的验证

时间:2011-11-21 11:56:07

标签: asp.net-mvc button submit unobtrusive-validation

我有两个提交按钮返回,继续。单击“返回”时,如何禁用客户端验证。我试图将cancel class添加到按钮属性,但它接缝无效。

UPD。实际上这是有效的cancel class。但是如果你动态添加它(通过javascript),它就无法正常工作。

4 个答案:

答案 0 :(得分:14)

我将事件处理程序附加到某些按钮,这些按钮改变了该特定表单上验证器对象的设置。

$(".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 = "*"
    });
});

答案 1 :(得分:3)

使用JavaScript劫持按钮单击表单提交。

以下是jQuery的一个很好的例子:

$("#MyButton").click(function(e) { 

    //submit your form manually here
    e.preventDefault();
});

答案 2 :(得分:1)

这真的是对tugberk答案的评论,但评论并没有很好地展示代码示例。

某些浏览器版本不喜欢“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;
});

答案 3 :(得分:1)

您可以使用&#34;取消&#34; 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;
});