删除不可见表单字段的验证

时间:2014-12-03 18:21:21

标签: jquery validation asp.net-mvc-5 unobtrusive-validation

在模型中,对于属性 ItemDescription ,我设置了属性 [必需] 根据我的用户界面选择,我会在视图中显示此字段,有时可见,有时则不可见。

当此字段不可见时,如何进行不显眼的验证以忽略 [必需] 属性。

这是我到目前为止所尝试的内容:

$(document).ready(function () {

        //doesn't seem to do anything. The field is still validated
        $("form").validate().settings.ignore = "#ItemDescription";

        //throws an error
        $("form").data("validation").settings.ignore = "#ItemDescription";

        //doesn't seem to do anything. The field is still validated
        $.validator.setDefaults({
            ignore: "#ItemDescription"
        });

        //doesn't seem to do anything. The field is still validated
        $("#ItemDescription").removeAttr("data-val");
        $("#ItemDescription").removeAttr("data-val-required");
 });

我的猜测是我打电话太晚了。 我使用的是jquery 1.9.0和jquery.validate 1.9.0

由于

2 个答案:

答案 0 :(得分:0)

你应该做的是。当您隐藏控件时,添加一个包含正确名称的隐藏字段,其中包含您想要的值(可能是默认值)。或者您应该控制hiddenField中的值,以便您不会遇到所需的问题。 Dataannotation不会被忽略。

您使用ViewModel吗?如果不是,那么这样做是个好主意。因此,在ViewModel中,该属性不具备Required。因此,在服务器端,您可以将ViewModel转换为模型时所需的值,以更新数据库。

我希望它清楚。

答案 1 :(得分:0)

$("form").validate({
    ignore:'#ItemDescription'
});

ignore设置允许您指定在验证表单时将被忽略的选择器。在这种情况下,我已经指定了ID选择器。