由于验证错误,导致表单未发布到服务器

时间:2017-10-10 09:35:05

标签: javascript jquery asp.net-mvc

我有一个带验证的基本ASP.NET MVC表单。使用viewmodel中的属性/数据注释实现验证,并配置我的网站,以便在客户端和服务器端执行验证。我相信这是一种非常常见的模式。

表格是使用普通的回发提交的;所以没有涉及ajax。

有时处理表单需要一些时间,所以我想在处理过程中显示一个微调器。我已经实现了使用javascript显示和隐藏微调器的必要代码。

我使用jquery在提交表单时显示微调器。

$('form').submit(function () {
     showSpinner();
});

显示微调器,如果一切顺利,页面将刷新,因此微调器消失。无需调用我的hideSpinner()javascript函数。

问题在于,如果表单中存在验证错误,仍会显示微调器,但是没有页面刷新,因为客户端验证将阻止发生这种情况。因此,旋转器不会消失。

我尝试通过手动隐藏微调器来解决这个问题:

$('form').bind('invalid-form.validate', function () {
    hidespinner();
});

使用此代码实际上隐藏了微调器,但它似乎也禁用了客户端验证!即使存在错误,也不会显示验证消息并刷新页面。

是否有更好的方法只在表单实际提交给服务器时显示微调器,或者如果客户端验证停止发布表单,则隐藏微调器?

1 个答案:

答案 0 :(得分:2)

您可以使用.valid()方法

测试表单是否有效
$('form').submit(function () {
    if($(this).valid()) {
        showSpinner();
    }
});