如何在表单级服务器端validation中使用jQuery Validation插件?

在表单通过初始客户端validation后返回的服务器端validation错误的元素触发错误的最佳方法是什么?

$("#contact_form").validate({ submitHandler: function(form) { $.ajax({ type: 'POST', dataType: 'json', url: '/contact/send', data: $(form).serialize(), success: function(response) { if(response.error) { //server came back with validation issues var fields = response.fields; for(var i=0, var len = fields.length; i < len; i++) { var field_name = fields[i].name; var field_error = fields[i].error; // TRIGGER ERROR ON AFFECTED ELEMENT } return false; } //everything went ok, so let's show a thanks message showThanks(); } } }); 

我想的是:

 $(form).find("[name='" + field_name + "']").triggerError(field_error); 

但我没有看到任何以这种方式手动触发错误的api方法。

我想我从Validator / showErrors的文档中找到了它

 var validator = $("#contact_form").validate(); validator.showErrors({"state": "Bad state."}); 

做了。 编写一个可以随心所欲的插件 。 或者如果你变得复杂,只需编写一个javascript函数来执行它并调用它。

我会写一个插件来创建一个div,用错误文本填充它并很好地制作动画。

在提交表单时,我会在页面上使表单的目标成为一个不可见的iframe,然后使用它的结果调用topWindow中的函数。

  

然后在iframe的页面中调用顶部窗口中的javascript方法,该方法在成功时重定向或显示错误。

在iframe中

  

在顶部窗口 (作为示例)

 function uploadComplete( result ){ $.unblockUI(); if(result == "OK"){ $.blockUI({ message: "File upload successful, request submitted.

Redirecting..." }); setTimeout(function() { $.unblockUI({ onUnblock: function(){ window.location='thankyou.php'; } }); }, 2000); } else { $.blockUI({ message: "Failed.

"+result }); $('.blockOverlay').attr('title','Click to remove').click($.unblockUI); } }