【问题标题】:jquery .validate returns undefinedjquery .validate 返回未定义
【发布时间】:2014-07-29 17:03:26
【问题描述】:

我创建了一个使用 editorfor 函数动态添加字段的 MVC 5 表单。这些字段由 MVC 自动分配新的 id 和名称,因此我在模型中定义的属性不是相同的 id 和名称。这导致 MVC 验证无法检索我在属性数据注释中指定的错误消息。为了纠正这个问题,我试图为元素分配一个特定的错误消息。但是,我无法将validator.showErrors 应用于元素,因为当我尝试验证特定元素时,结果未定义。为什么下面代码中的 var validator 返回 undefined?

谢谢...

$('form').removeData("validator").removeData("unobtrusiveValidation");
$.validator.unobtrusive.parse($('form'));

var validator = $('#myClass_0__Age').validate();

【问题讨论】:

    标签: jquery asp.net-mvc validation


    【解决方案1】:

    其实我一直都有正确的 jQuery 函数:

    $('form').removeData("validator").removeData("unobtrusiveValidation");
    $.validator.unobtrusive.parse($('form'));
    

    但是我的页面显示的是我的嵌套类属性的默认 MVC 验证错误,而不是我在这些属性的数据注释中指定的错误,因为我在我的提交函数,而不是在我用来输入附加属性的 Json 函数中。将上面的行移至我的属性/元素加载函数的 Json 响应解决了该问题。

    【讨论】:

      【解决方案2】:

      我相信 jquery validate 在表单最初加载时会根据元素上的类进行初始化。

      因为您正在动态添加需要验证的元素,所以您必须在加载它们时自己注册它们以进行验证。

      $('#elementID').rules('add', 'required');
      

      尝试在元素上添加元素到表单后调用它,然后查看验证器是否停止返回 undefined。

      例如即使您正在添加它们,如果它们没有所有正确的类,它也不会将它们添加到验证中。我很确定使用上面的代码将为您完成所有这些类并将其连接到验证引擎中。

      【讨论】:

      • 感谢您的回复。您帮助我走上了正确的轨道,因为您在加载我的页面元素时需要更新 jQuery 验证是正确的。幸运的是,我不需要像您描述的那样注册每个元素,只需重新解析表单(参见下面的响应)就足够了。
      猜你喜欢
      • 2011-04-17
      • 2021-09-06
      • 2016-12-01
      • 2010-11-29
      • 2020-06-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多