无法在不可见字段上停止验证?

时间:2017-05-03 17:55:06

标签: jquery asp.net-mvc

我有一个MVC 5表单,我正在使用jQuery验证。我的问题是,基于特定条件,我有一些文本框没有写在表单中。但是,DataAnnotation设置为Required,以便验证它们是否可见。

因为在不可见的字段上有必需的DataAnnotation,所以我的表单没有发布。

我做了一些环顾四周,并找到了一个建议,给我的表单一个ID和名称,然后只是下面的jQuery。我确实查看了页面上的来源,表单名称是正确的,但它仍在尝试验证不可见的字段。

<script>
    $(document).ready(function () {
        $("#requestForm").validate({ ignore: ":not(:visible)" });
    });        
</script>

只是为了澄清,这些不是隐藏的领域。它们是未在视图中写出的文本框。这是View中的代码。在我的场景中,这不是一个部分,所以这些文本框只是没有写到页面,但它导致模型无效,从而阻止它被发布。

if (Model.RequestType.ToLower() == "partial")
{

    <div class="form-group row">
        <div class="col-md-3">
            <label class="control-label">From</label>
            @Html.TextBoxFor(m => m.PartialFrom, new { @maxlength = "4", @class = "form-control" })
            @Html.ValidationMessageFor(m => m.PartialFrom, null, new { @class = "text-danger" })
        </div>
    </div>
}

1 个答案:

答案 0 :(得分:0)

您可以在vaidation插件代码之前使用以下代码:

  // all agents in set
  List<object> ops = m.GroupBy(x => x.Agent).ToList()
  .ConvertAll(c => (object)new { Agent = c.First().Agent});
  list = m
  .GroupBy(x => string.Format(@"""DateText"": {0}", x.DateText ))
  .ToDictionary(x => x.Key, x => x.ToList()
  .ConvertdictionaryAll(c => (object)new { Datetext = c.DateText,  Agent 
  c.Agent, Talk = c.Talk  })));
  list.Add("keys", ops);

您可以查看JQUERY VALIDATION LOGS