jQuery Validator插件-函数中的触发器

jQuery Validator Plug In - trigger from within a function

本文关键字:触发器 函数 Validator 插件 jQuery      更新时间:2023-09-26

我在验证加载文档后通过AJAX加载的长表单时遇到问题。使用标准的验证语法,验证器在文档存在之前就在文档中查找我的表单,因此会给我一个错误:

$(document).ready(function(){
   $("#mainForm").validate();
});

firebug回应:

nothing selected, can't validate, returning nothing

我试着把$("mainForm").validate();放在一个函数中,然后用表单中的onSubmit事件调用该函数,但没有成功:

function validate() {
  $("mainForm").validate();
};
----------
<form id="mainForm" onSubmit="validate();">
   ...
</form>

想法?


@Chris的一些额外信息:

我有一个基于许多不同模块动态创建表单的页面。用户选择适用于他们的模块,然后用这些信息更新表单以填写。因此,当用户单击链接加载模块时,会调用loadSection();函数。这就是loadSection();函数的样子:

function loadSection(id, div, size, frame) {
  var url = "loadSection.php?id=" + id + "&size=" + size + "$frame=" + frame;
  $.get(url,
    function(data){
      $(div).append(data);
    });
}

如果我放入`$(#mainForm).validate();'在这个函数的回调中,它有可能在每次插入新模块时被调用。这可能是好的,也可能是坏的,我不确定如何在同一个表单上多次调用验证,即使表单的字段已经更改。

想法?

您很可能已经解决了问题。如果表单在document.ready()的DOM中不存在,那么将不绑定任何内容。

由于您使用的是JQuery,我认为该表单是使用JQuery$.ajax(或类似的)函数添加的。最简单的解决方案就是将$("#mainForm").validate();添加到AJAX请求的回调函数中。如果您没有使用JQUery ajax,请发布添加表单的代码,我们可以进一步帮助您。

您必须将元素的类定义指定为required,以便它验证表单中的特定元素。但我想您没有它,所以它是这样显示的。

例如,如果您想验证电子邮件:

   <p>
     <label for="cemail">E-Mail</label>
     <em>*</em><input id="cemail" name="email" size="25"  class="required email" />
   </p>
选择器"mainform"中的一个简单错误不是有效的选择器。如果是ID ,则添加"#"前缀

EDIT:还要注意,您有另一个内联的验证调用,删除那个