如何在$ .ajax()之前或之前强制进行客户端验证

时间:2011-05-24 16:37:41

标签: validation asp.net-mvc-3 jquery unobtrusive-validation

我有一个表单,启用了不显眼的验证。默认情况下,在提交方法中,客户端验证会被触发,并且(如果您有任何错误)表单如下所示:

enter image description here

即使在将任何数据发送到服务器之前,验证也会发生。

现在,如果要使用$ .ajax方法,则此行为不起作用。客户端验证不起作用。您必须手动检查javascript中的所有字段,否则会失去DataAnnotations的所有优点。

有没有更好的解决方案?我可以使用jquery的 submit(),但我想它没有像 $。ajax 这样的回调。

4 个答案:

答案 0 :(得分:12)

哦......

if (form.valid()) // do submit

答案 1 :(得分:2)

您必须在检查表单是否有效之前强制表单进行验证。像这样:

var form = $( "#myform" );
form.validate();
if (form.valid()) {
    // ...
}

答案 2 :(得分:1)

我做了......

$("#form-submit-button").click(function (e) {
    e.preventDefault(); // Stops the form automatically submitting
    if ($("#my-form").valid()) {
        $("#my-form").submit();
    }
});

如果您说带有插件的文本框可以将这些文本框放入日历控件中,这似乎也是一个很好的解决方案。我说这个的唯一原因是因为我使用Zebra Datepicker和MVC表单,如果焦点在日历日期选择器上,它将提交一个无效表单。使用以下代码可以停止此操作。

答案 3 :(得分:0)

我遇到了Yablargo所遇到的同样问题,因为它说有效不是一个功能,所以我想出了这个:

对于提交按钮的onclick处理程序,我把它放在:

onclick =“return $(this).closest('form')。checkValidity();”

相关问题