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) }
我尝试过什么
- 替换忽略:“:hidden”, 忽略:“” ,在validate.js中
-
var validateMeta = $(’#form123’)。validate(); validateMeta.settings.ignore =“”;
-
$.validator.setDefaults({ignore: ""});
-
$.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:hidden
和height: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 = "";