我有一个带验证的基本ASP.NET MVC表单。使用viewmodel中的属性/数据注释实现验证,并配置我的网站,以便在客户端和服务器端执行验证。我相信这是一种非常常见的模式。
表格是使用普通的回发提交的;所以没有涉及ajax。
有时处理表单需要一些时间,所以我想在处理过程中显示一个微调器。我已经实现了使用javascript显示和隐藏微调器的必要代码。
我使用jquery在提交表单时显示微调器。
$('form').submit(function () {
showSpinner();
});
显示微调器,如果一切顺利,页面将刷新,因此微调器消失。无需调用我的hideSpinner()javascript函数。
问题在于,如果表单中存在验证错误,仍会显示微调器,但是没有页面刷新,因为客户端验证将阻止发生这种情况。因此,旋转器不会消失。
我尝试通过手动隐藏微调器来解决这个问题:
$('form').bind('invalid-form.validate', function () {
hidespinner();
});
使用此代码实际上隐藏了微调器,但它似乎也禁用了客户端验证!即使存在错误,也不会显示验证消息并刷新页面。
是否有更好的方法只在表单实际提交给服务器时显示微调器,或者如果客户端验证停止发布表单,则隐藏微调器?
答案 0 :(得分:2)
您可以使用.valid()
方法
$('form').submit(function () {
if($(this).valid()) {
showSpinner();
}
});