【问题标题】:jQuery.validate() error: Uncaught TypeError: Cannot read property 'settings' of undefinedjQuery.validate() 错误:未捕获的 TypeError:无法读取未定义的属性“设置”
【发布时间】:2018-11-05 09:05:59
【问题描述】:

我有一个 Javascript 函数,我在将 Ajax 内容添加到 DOM 时调用它,我运行 $('form').validate({ }); 并且验证适用于现有内容和新内容。

我将这个脚本添加到我的所有页面中,以为它不会受到伤害,但确实如此,现在我有一个带有简单 form 用于过滤的页面:

@using (Html.BeginForm())
{
    <div class="form-group">
        @Html.Label("Error Type", htmlAttributes: new { @class = "control-label " })
        @Html.DropDownList("statusCodeFilter", StatusCodes, new { @class = "form-control", @OnChange = "$('#load-error-log').click();" })
        @Html.ValidationSummary(true, "", new { @class = "text-danger" })
    </div>

    <input type="submit" id="load-error-log" value="Refresh" style="display: block;" />
}

这会在更改DropDownList选项时导致Javascript错误,我不太明白,在线搜索我发现重复的ID可能是问题,但我没有那种类型的数据。

jquery.validate.js:421 Uncaught TypeError: Cannot read property 'settings' of undefined

谁能解释可能发生的事情或链接到我没有遇到的一些文章?

【问题讨论】:

  • 同一页面中是否有多个表单?您的验证设置适用于哪个表单?
  • 你不应该打电话给$('form').validate({ }) - 这是由jquery.validate.unobtrusive.js 插件设置的。添加新内容时,需要重新解析验证器。参考Required field validations not working in JQuery Popup MVC 4
  • @muecas 我只有一个
    标签,这个页面是一个Object的ListView,Form就是过滤。
  • @stephen-muecke 我了解,我对将插入 Ajax 的内容使用 .validate()(我将继续这样做),但不要在非 ajax 内容上使用它(常规页面)。
  • @Derek,不!不要使用.validate() - 请参阅我链接到的答案。

标签: jquery asp.net-mvc razor


【解决方案1】:

您必须在表单声明中使用 role="form"

<form name="form" role="form">

【讨论】:

    猜你喜欢
    • 2019-06-19
    • 1970-01-01
    • 2020-05-16
    • 2015-12-10
    • 2015-06-13
    • 1970-01-01
    • 2016-11-17
    • 2011-07-18
    • 1970-01-01
    相关资源
    最近更新 更多