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

我有一个表单和不引人注目的validation已启用。 默认情况下,在提交方法中,客户端validation会被触发,并且(如果您有任何错误)表单如下所示:

在此处输入图像描述

甚至在将任何数据发送到服务器之前就会进行validation。

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

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

哦…

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

您必须在检查表单是否有效之前强制表单进行validation。 像这样的东西:

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

我做了……

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

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

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

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

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