一个表单上有多个jqueryvalidation器

我正在使用jquery.validate插件并面临以下情况:

$(document).ready(function() { var validator = $('#myForm').validate({ rules: { value_from_partial: { required: true } }, messages: { value_from_partial: { required: "Enter your firstname" } }, submitHandler: function() { alert("submitted!"); } }); });
$(document).ready(function() { var validator = $('#myForm').validate({ rules: { value1: { required: true } }, messages: { value1: { required: "Enter your firstname" } }, submitHandler: function() { alert("submitted!"); } }); });

部分中添加的validation不起作用。 当我从主html中删除.validate时,部分工作中的validation。 似乎jquery.validate不允许在同一表单上有两个.validate调用。 另一方面,我不能为validation器调用“添加”规则,因为我希望我的validation代码来自部分本身(实际上是一个插件)。 有没有办法将我的validation逻辑与partial一起包含在内,并使用jqury.validate而不是手动validation。 是否有其他validation框架可以允许这个? 谢谢!

你是不对的,你不能两次调用validate() 。 嗯,你可以,但选项第二次没有效果。

两种选择:

  1. 用HTML而不是JavaScript构建规则。 例如,将required类添加到输入而不是添加所需的规则。 validation器支持这一点。
  2. 让表单的“部分”和“主要”部分构建一个options 对象 ,然后在单个ready事件中调用validate ,传递此对象,而不是调用validate两次。

如果您将大型表单分成多个部分,那么为什么不将每个部分都变成自己的forms呢? 随着每个部分的完成,您可以使用最终forms的隐藏输入inheritance值,或者更好地分配会话变量。

在部分加载之前,您可以尝试使validation器成为全局变量。

 var validator; 

接下来,您可以尝试取消绑定第二个document.ready块中第一次调用validate()的submit方法:

 $('#myForm').unbind('submit');