Javascript 如何将jQuery验证插件与表单级服务器端验证一起使用?

Javascript 如何将jQuery验证插件与表单级服务器端验证一起使用?,javascript,jquery,validation,jquery-validate,Javascript,Jquery,Validation,Jquery Validate,在表单通过初始客户端验证后返回的服务器端验证错误的元素上触发错误的最佳方法是什么 $("#contact_form").validate({ submitHandler: function(form) { $.ajax({ type: 'POST', dataType: 'json', url: '/contact/send', data: $(form).serialize(), success: function(res

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

$("#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方法可以以这种方式手动触发错误。你想干什么就干什么。
$(form).find("[name='" + field_name + "']").triggerError(field_error);
或者,如果您变得复杂,只需编写一个javascript函数来完成并调用它

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

我会编写一个插件,创建一个div,用错误文本填充它,并很好地设置它的动画。

在提交表单时,我会将表单的目标设置为页面上的一个不可见的iframe,然后在topWindow中调用一个函数并显示结果

$(form).find("[name='" + field_name + "']").triggerError(field_error);
<iframe id="subject_frame" name="submit_frame" src="#" style="width:0;height:0;border:0px solid #fff;"></iframe> 

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

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

$(form).find("[name='" + field_name + "']").triggerError(field_error);
<script language="javascript" type="text/javascript">
   window.top.window.submitComplete("<?php echo $response; ?>");
</script>   

window.top.window.submitComplete(“”);
顶部窗口中的(例如)

$(form).find("[name='" + field_name + "']").triggerError(field_error);
函数上传完成(结果){
$.unbui();
如果(结果=“确定”){
$.blockUI({消息:“文件上载成功,请求已提交。

重定向…”); setTimeout(函数(){ $.unbui({ onUnblock:function(){window.location='thankyou.php';} }); }, 2000); }否则{ $.blockUI({消息:“失败。

“+result}); $('.blockOverlay').attr('title','Click to remove')。单击($.unbui); } }
我想我是从

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

事实上,我开始使用自己的插件,但我想尽量避免重新发明轮子。这真的是我唯一缺少的功能,它似乎是一个相当常见的用例,所以我只是想在我花时间开发自己的功能之前看看是否有其他人遇到过它。我通常感觉最好的工作是你自己做的。我快速搜索没有提供任何结果,也许有人知道这样一个插件,现在,我会编写一个非常简单的插件,在这种情况下使用
iFrame
远远不够理想。在这种情况下,可以使用更好的技术。我已经控制了表单提交过程,我只想能够触发错误,就像基于响应的任何其他客户端验证错误一样。如何在单个字段上显示多个错误消息。像{'state':['bad state','应该是5个字符']}