我有一个表单,启用了不显眼的验证。默认情况下,在提交方法中,客户端验证会被触发,并且(如果您有任何错误)表单如下所示:
即使在将任何数据发送到服务器之前,验证也会发生。
现在,如果要使用$ .ajax方法,则此行为不起作用。客户端验证不起作用。您必须手动检查javascript中的所有字段,否则会失去DataAnnotations的所有优点。
有没有更好的解决方案?我可以使用jquery的 submit(),但我想它没有像 $。ajax 这样的回调。
答案 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();”