MVC:如何在隐藏字段上启用客户端validation

@Scripts

   

@视图

 @using (Html.BeginForm("TestModelState", "RandD", FormMethod.Post, new {id="form123" })) { @Html.TextBoxFor(x => x.htmlText, new { style="display:none"})
@Html.ValidationMessageFor(x => x.htmlText)
@Html.TextBoxFor(x => x.Uprop1)
@Html.ValidationMessageFor(x => x.Uprop1)
}

我尝试过什么

  1. 替换忽略:“:hidden”, 忽略:“” ,在validate.js中
  2. var validateMeta = $(’#form123’)。validate(); validateMeta.settings.ignore =“”;

  3. $.validator.setDefaults({ignore: ""});

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

我遇到了同样的问题。 页面上的隐藏字段存储用户ID,该用户ID是从自动填充文本框中选择的。 此ID已进行validation,以确保回发非零ID。 我们希望在客户端包含此validation。

默认情况下,jQuery validate忽略隐藏字段,零宽度和高度的元素,css display:none和任何具有不可见父元素的元素(使用相同的标准)。

但是,可以通过添加以下脚本来覆盖忽略设置(我在调用$ .validator.addMethod()之前将其添加到我的自定义validation器脚本中):

 // By default validator ignores hidden fields. // change the setting here to ignore nothing $.validator.setDefaults({ ignore: null }); 

注意:如果它在document ready或jQuery $(function () {})方法中运行,则此代码将不起作用。

在插入validation脚本之后,将ignore设置为“”:

 @section Scripts { @Scripts.Render("~/bundles/jqueryval")  } 

我不确定为什么您需要显示用户无法查看或编辑的字段的validation。 但你可以试试这个。 而不是display:none ,将visibility:hiddenheight:0应用于输入字段。

 @using (Html.BeginForm("TestModelState", "RandD", FormMethod.Post, new {id="form123" })) { @Html.TextBoxFor(x => x.htmlText, new { style="visibility:hidden;height:0"})
@Html.ValidationMessageFor(x => x.htmlText)
@Html.TextBoxFor(x => x.Uprop1)
@Html.ValidationMessageFor(x => x.Uprop1)
}

尝试

  var validator = $("#form-id").data('validator'); validator.settings.ignore = "";