jquery - MVC : How to enable client side validation on hidden fields

标签 jquery asp.net-mvc asp.net-mvc-4 jquery-validate unobtrusive-validation

@Scripts

 <script src="@Url.Content("~/Scripts/jquery-1.7.1.min.js")"></script>
  <script src="@Url.Content("~/Scripts/jquery.validate.js")"></script>
  <script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.js")"></script>

@View

@using (Html.BeginForm("TestModelState", "RandD", FormMethod.Post, new {id="form123" }))
{ 
    @Html.TextBoxFor(x => x.htmlText, new { style="display:none"})<br />
    @Html.ValidationMessageFor(x => x.htmlText)
    <div>
      @Html.TextBoxFor(x => x.Uprop1)<br />
      @Html.ValidationMessageFor(x => x.Uprop1)
    </div>
    <input type="submit" value-="Submit" onclick="abc()" />
}

我已经尝试过

  1. 在 validate.js 中将 ignore: ":hidden", 替换为 ignore: ""
  2. var validateMeta = $('#form123').validate(); validateMeta.settings.ignore = "";

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

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

最佳答案

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

默认情况下,jQuery 验证会忽略隐藏字段、宽度和高度为零的元素、具有 css display:none 的元素以及具有不可见父元素的任何元素(使用相同的条件)。

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

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

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

关于jquery - MVC : How to enable client side validation on hidden fields,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24572749/

相关文章:

javascript - jQuery 实时确认

c# - 从字符串创建 View

c# - 将模型属性传递给局部 View

javascript - jquery 上拒绝访问受限制的 uri,包括 - 与 www 子域一起正常工作

jquery - AngularJS - 三个输入字段电话号码验证

C#字符串不包含

asp.net - IIS 未运行 ASP.NET MVC 应用程序

jquery - 如何在jquery中显示存储在mvc4中Server.mappath之外的文件?

javascript - 10秒后显示div,10秒后隐藏

asp.net-mvc - asp.net mvc 在哪里设置默认文化?