jqueryvalidation不能在多个表单上工作

Jqueryvalidation适用于单一表单的网页。 但是,当我通过jquery调用表单并在jquery-ui对话框中显示时,validation不再起作用。 我是从主页面打电话联系我们的。 在主页面中存在用于搜索的另一种forms。 代码如下。

$("#contactus").live('click',function(){ $.get('/gordon/contacts/sendemail',function(result){ $('#popupinfo').html(result); $( "#popupinfo" ).dialog( "option", "title", 'Contact Us' ); $( "#popupinfo" ).dialog( "option", "height",'auto'); $( "#popupinfo" ).dialog( "option", "width",650); $("#popupinfo").dialog('open'); }); }); $("#popupinfo").dialog({ autoOpen: false, show: "blind", hide: "explode", modal: true }); $('.submit').live('click', function () { var form = $("#ContactSendemailForm"); $(form).validate(); }); 

编辑:

  $('.submit').live('click', function () { $(".validates").each(function() { $(this).validate(); }); }); 

validation是表格的类别。 但它仍然无效。

编辑:HTML代码我打电话给联系我们表格的页面

        $(function() { $("#contactus").live('click',function(){ $.get('/gordon/shows/send',function(result){ $('#popupinfo').html(result); $( "#popupinfo" ).dialog( "option", "title", 'Contact Us' ); $( "#popupinfo" ).dialog( "option", "height",'auto'); $( "#popupinfo" ).dialog( "option", "width",650); $("#popupinfo").dialog('open'); }); }); $("#popupinfo").dialog({ autoOpen: false, show: "blind", hide: "explode", modal: true }); $('.submit').live('click', function () { $('.validates').each(function() { $(this).validate(); }); }); });      
Contact us

联系我们表格

  label { width: 10em; float: left; } label.error { float: none; color: red; padding-left: .5em; vertical-align: top; } p { clear: both; } .submit { margin-left: 12em; } em { font-weight: bold; padding-right: 1em; vertical-align: top; }  Form->create('Contact',array('class'=>'validates')); echo '
'; echo '

' . $this->Form->input('name',array('label' => 'Name','class'=>'required')) . '

'; echo '

' . $this->Form->input('email',array('label' => 'Email','class'=>'required email')) . '

'; echo '

' . $this->Form->input('subject',array('label' => 'Subject','class'=>'required')) . '

'; echo '

' . $this->Form->input('message',array('rows'=>3,'label' => 'Message','class'=>'required')) . '

'; echo '

'; echo '
'; echo $this->Form->end(); ?>

更新:Cakephp为联系表单生成的代码

 

请帮助我。

提前致谢

你唯一得到一个表格 – >

var form = $("#ContactSendemailForm");

此选择器获取一个ID为ContactSendemailForm的元素

你需要让每个表单validation()然后validation它 – 表单是否有类? 如果是这样的话

 $(".classofform").each(function() { $(this).validate(); }); 

这会在每个jQuery对象上调用validate()方法 – 选择器返回带有类classofform的DOM元素的classofform

每个文件()

更新

根据这个答案的评论,我认为我的回答是误导性的…我认为你想同时validation这两种forms..但是,我知道你不…

首先是一些基本的解释.. jQuery中的live()方法用于监听DOM上尚未出现的元素上的事件 – 当页面加载时对象存在时你不需要使用它…

您有一个已存在表单的页面:

  
Contact us

这有一个search ID,所以要在提交时validation此表单,请执行以下操作:

 $('search').submit(function() { $(this).validate(); )} 

submit()方法的文档

然后,为了确保您正确validation联系我们(通过弹出窗口)表单,您可以执行以下操作:

 $('#contactform').live('submit', function() { $(this).validate(); )} 

使用live()函数(on()应该在jQuery 1.7+中使用)意味着无论contactform元素是否在加载时都可以使用它。

最后要注意的是,在加载时出现的元素上执行的代码应包含在以下函数中

 $(document).ready(function() { // code here )} 

这可确保DOM元素在被操作之前就绪

更新2

    

应该

    

应该在任何插件之前加载核心jQuery库

文件:

  • 准备()
  • 生活()
  • 上()
  • 提交()

它应该是

 form.validate(); 

并不是

 $(form).validate(); 

设置变量时,您已经包含了$()部分。