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->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();
设置变量时,您已经包含了$()
部分。