在提交表单时拦截数据验证失败

时间:2011-05-06 09:36:00

标签: jquery asp.net-mvc form-submit validation

我正在ASP.NET MVC 3中编写一个表单(但在其他环境中的情况可能类似)。 在提交表单时,我想禁用页面,因为服务器处理有点长,所以我想避免用户在按钮上单击两次。 我使用blockUI插件函数,如:

<script type="text/javascript">
    jQuery(document).ready(function () {
        $('#AddUserForm').submit(function () {
            $.blockUI();
        });
    });
</script>

我不担心联合国阻止用户界面,因为我的表单提交会生成一个新的页面加载,所以事情从一开始就开始。 问题是我的表单使用数据验证属性,如

<input class="text-box single-line" data-val="true" data-val-required="The UserName field is required." id="UserName" name="UserName" type="text" value="" />

所以如果一个字段没有正确验证,表单IS提交(我的代码被执行,阻止了UI),但页面甚至没有被重新加载,所以我完全被阻止了。

有没有人知道是否有拦截事件,对于这种情况,还是有用的替代方案? 提前致谢。 Andrea Bioli

2 个答案:

答案 0 :(得分:1)

使用web.config中的mvc3,ClientValidationEnabled和UnobtrusiveJavaScriptEnabled,您只需在提交中使用:

  

if($(“form:first”)。valid()){$ .blockUI({message:'Un instant svp ...'}); }

答案 1 :(得分:0)

查看preventDefault方法。

<script type="text/javascript">
    jQuery(document).ready(function () {
        $('#AddUserForm').submit(function (event) {
            event.preventDefault();
            $.blockUI();
        });
    });
</script>