Jquery ASP.NET MVC 4-仅对可见/显示的元素进行模型验证?

Jquery ASP.NET MVC 4-仅对可见/显示的元素进行模型验证?,jquery,css,asp.net-mvc,validation,razor,Jquery,Css,Asp.net Mvc,Validation,Razor,我有以下结构: -我有一个Razor视图,有一个控制器和一个ViewModel。 -一个Razor视图将模拟它将由不同的页面组成,并且您可以在这些页面之间切换。 -我用了下面的例子。。。 -这对我来说很好。它使用jQuery和div。如果单击选项卡2,则会隐藏选项卡1和选项卡3的div。所有div都运行在同一个div之下 以“Html.BeginForm(新的{ReturnUrl”)开头的表单= ViewBag.ReturnUrl})”。我在div中使用输入元素而不是文本。选项卡旁边有一个提交按

我有以下结构:
-我有一个Razor视图,有一个控制器和一个ViewModel。
-一个Razor视图将模拟它将由不同的页面组成,并且您可以在这些页面之间切换。
-我用了下面的例子。。。 -这对我来说很好。它使用jQuery和div。如果单击选项卡2,则会隐藏选项卡1和选项卡3的div。所有div都运行在同一个div之下 以“Html.BeginForm(新的{ReturnUrl”)开头的表单= ViewBag.ReturnUrl})”。我在div中使用输入元素而不是文本。选项卡旁边有一个提交按钮,该按钮在页面上始终可见。我使用@Html.ValidationMessageFor(…)来验证用户的输入。

    function navigate_tabs(container, tab) {
        $(".b").css('display', 'none');
        $(".c").css('display', 'none');
        $(".a").css('display', 'none');

        $("#first-tab").removeClass('buttonsHover');
        $("#second-tab").removeClass('buttonsHover');
        $("#third-tab").removeClass('buttonsHover');

        $("#" + tab).addClass('buttonsHover');
        $("." + container).show();
    }

备注:a、b和c为div(又名容器)

我现在有以下问题:
-我想将那些div的选项卡按钮涂成红色,其中包含@Html.ValidationMessageFor(…)应用CSS类的输入元素。当用户输入丢失或在我点击提交按钮时出错时,会自动“输入验证错误”。为此,我使用以下jQuery脚本(类按钮错误只是将选项卡涂成红色):

到目前为止,它适用于当前显示的选项卡和DIV,但不适用于其DIV被隐藏的其他两个选项卡。它只适用于其他选项卡及其div,如果我先单击它们。但它也适用于隐藏的div。用户不必首先单击每个选项卡来查看哪个DIV包含错误。如果我查看客户端web浏览器的HTML源代码,所有输入元素都在后台,应该可以进行验证

我的问题:
模型验证是否仅可用于显示的输入元素?如何使其适用于当前未显示的输入元素? 有人知道ASP.NET MVC的模型验证在这里是如何工作的吗?有人知道解决方法吗

非常感谢

编辑:
解决方案现在看起来是这样的

    $.validator.setDefaults({
        ignore: []
    })

    $("form").submit(function () {
        $("#first-tab").removeClass('buttonsError');
        $("#second-tab").removeClass('buttonsError');
        $("#third-tab").removeClass('buttonsError');

        if ($(this).valid() == false) {
            if ($(".a").find(".input-validation-error").length > 0) {
                $("#first-tab").addClass('buttonsError');
            }
            if ($(".b").find(".input-validation-error").length > 0) {
                $("#second-tab").addClass('buttonsError');
            }
            if ($(".c").find(".input-validation-error").length > 0) {
                $("#third-tab").addClass('buttonsError');
            }
        }
    });

非常感谢!!!它现在工作得非常好。

您可以使用
$.validator.setDefaults({ignore:[]})以便验证包括隐藏元素在内的所有元素-请参阅更多信息,谢谢!!!这很有帮助。如果我没找到,很抱歉。我想我用错关键词了。
    $.validator.setDefaults({
        ignore: []
    })

    $("form").submit(function () {
        $("#first-tab").removeClass('buttonsError');
        $("#second-tab").removeClass('buttonsError');
        $("#third-tab").removeClass('buttonsError');

        if ($(this).valid() == false) {
            if ($(".a").find(".input-validation-error").length > 0) {
                $("#first-tab").addClass('buttonsError');
            }
            if ($(".b").find(".input-validation-error").length > 0) {
                $("#second-tab").addClass('buttonsError');
            }
            if ($(".c").find(".input-validation-error").length > 0) {
                $("#third-tab").addClass('buttonsError');
            }
        }
    });