【问题标题】:jQuery Validator Plug In - trigger from within a functionjQuery Validator Plug In - 从函数内触发
【发布时间】:2012-02-29 18:08:41
【问题描述】:

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

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

萤火虫回应:

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();'在这个函数的回调中,它有可能在每次插入新模块时被调用。这可能是好的,也可能是坏的,我不确定如何在同一个表单上多次调用验证,即使表单的字段已经改变。

想法?

【问题讨论】:

    标签: javascript jquery validation


    【解决方案1】:

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

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

    【讨论】:

    • 我用更多信息更新了原始问题,这些信息可能会解释得更多。谢谢!
    【解决方案2】:

    您必须将元素的类定义指定为required,以便它验证表单中的特定元素。但我猜你在任何地方都没有它,所以它的显示是这样的。

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

       <p>
         <label for="cemail">E-Mail</label>
         <em>*</em><input id="cemail" name="email" size="25"  class="required email" />
       </p>
    

    【讨论】:

      【解决方案3】:

      选择器"mainform" 中的简单错误不是有效的选择器。如果是ID,加“#”前缀

      编辑:还要注意你有另一个 validate call inline ,删除那个

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-05-18
        • 1970-01-01
        • 1970-01-01
        • 2014-11-20
        • 1970-01-01
        • 2015-03-18
        • 2012-06-28
        相关资源
        最近更新 更多