【发布时间】:2018-03-24 17:22:17
【问题描述】:
我正在创建一个 ASP.NET MVC 5 应用程序。在用户单击“提交”按钮和加载下一页之间有很长的等待时间,所以我希望只有在用户提交了有效的文件时才会弹出“请等待”模式形式。
我尝试了以下代码,无论表单是否有效,都会导致模式弹出:
$('form').submit(function () {
$('#waitingModal').show();
});
我的应用程序使用了创建 MVC 应用程序时附带的 jQuery Validate 插件和不显眼的验证,所以我尝试了以下代码:
$('form').submit(function () {
if ($(this).valid()) {
$('#waitingModal').show();
}
});
但我收到以下错误:
TypeError: $(...).valid 不是函数
NuGet 管理器说我正在使用 jQuery 版本 1.11.1、jQuery Validate 1.11.1 和 jQuery Unobtrusive 3.2.3。
我的代码中是否缺少某些内容?还有其他方法吗?
【问题讨论】:
-
"validate() needs to be called on the form before checking it using this method"。尝试在您的表单元素上调用
.validate(),然后再检查它是否为.valid()。 -
谢谢亚伦!这不仅是一个问题,而且我还必须重新排列我的脚本标签。现在一切正常。希望我理解脚本标签的原因,但至少 .validate() 有意义!
-
@AaronEveleth, DO NOT call
.validate();-jquery.validate.unobtrusive.js插件已经调用了它,它只会导致其他问题(这个问题是脚本) -
@StephenMuecke 我只是引用了我链接的文档。如果你说的是真的,那么它应该在文档中更新。我没有办法知道这一点,我不使用这个插件。如果不更新,将来可能会导致更多混乱。
-
@AaronEveleth,您对
jquery.validate文档的引用(如果这就是 OP 的全部内容,那就太好了)。jquery.validate.unobtrusive.js插件已经调用了该方法并配置了jquery.validate(根据视图中生成的data-val-*属性添加规则等)
标签: jquery asp.net-mvc asp.net-mvc-5 jquery-validate unobtrusive-validation