我创建一个ASP.NET MVC 5应用程序。 有用户点击“提交”按钮,加载下一页面之间漫长的等待时间,所以我想一个“请稍候”模态弹出只有当用户提交一个有效形式。
我曾尝试下面的代码,这会导致模态弹出不管形式是否有效:
$('form').submit(function () {
$('#waitingModal').show();
});
我的应用程序利用jQuery验证插件和不显眼验证这两个带着创建一个MVC应用程序,所以我想这样的代码:
$('form').submit(function () {
if ($(this).valid()) {
$('#waitingModal').show();
}
});
不过,我收到以下错误:
类型错误:$(...)有效的不是一个函数
该经理的NuGet说,我用jQuery版本1.11.1,jQuery验证1.11.1和jQuery 3.2.3不显眼的工作。
我失去了我的代码的东西吗? 是否有另一种方法?
感谢您的意见和这个职位 ,我能解决我的问题。 这里发布的解决方案为别人谁运行到这个问题?
我加.validate()我的代码如下所示:
$('form').submit(function () {
$(this).validate();
if ($(this).valid()) {
$('#waitingModal').show();
}
});
但是跑进相同的错误:
类型错误:$(...)验证是不是一个函数
谷歌搜索和发现后这个帖子 ,我想我会尝试重新安排我的脚本标签。 虽然我的jQuery脚本标签驻留在我的Layout.cshtml,我需要我的脚本标签移动到jQuery验证在窗体的视图脚本标签列表的底部。 现在进行模态弹出我究竟怎么想。
编辑
每其他用户的评论,我删除.validate(); 从我的代码。 所以,我的代码是回这样的:
$('form').submit(function () {
if ($(this).valid()) {
$('#waitingModal').show();
}
});
正如用户所说,代码运行完全正常,而不.validate(); 原来我唯一的问题是我的脚本标记的顺序。
你需要使用jQuery的Ajax回调函数。 这可能是HTTP POST或GET调用。 为了您的“提交”的情况下,这应该是一个POST调用。
例如:
var element = $('#dialogContent');
element.html('please wait...');
element.dialog("open");
$.ajax(url, {
data: { "_": $.now() },
contentType: 'text/html',
dataType: 'html',
type: 'POST'
}).done(function (data) {
setTimeout(function () {
element.html(data);
}, 100);
return false;
}).fail(function (error) {
element.html('Show error information here..');
}
);