【发布时间】: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 我只有一个
-
@stephen-muecke 我了解,我对将插入 Ajax 的内容使用 .validate()(我将继续这样做),但不要在非 ajax 内容上使用它(常规页面)。
-
@Derek,不!不要使用
.validate()- 请参阅我链接到的答案。
标签: jquery asp.net-mvc razor