【问题标题】:jquery validate plugin with dynamic forms带有动态表单的jQuery验证插件
【发布时间】:2012-06-08 16:34:35
【问题描述】:

如果尚未创建表单,如何使用此代码(来自 demo):

jQuery("#form").validate({
  submitHandler: function(form) {
    jQuery(form).ajaxSubmit({
      target: "#result"
    });
  }
});

一种行不通的方法是像这样在on('click', 上调用验证:

$(document.body).on('click', '.submitBtn', function(){
   var $form =$('form'+this.id);
       $form.validate({
         submitHandler: function($form) {
           $form.ajaxSubmit({
             target: "#result"
           });
         }
       });
});

有什么建议吗?

【问题讨论】:

    标签: javascript jquery ajax jquery-validate


    【解决方案1】:

    在创建表单后尝试使用jQuery("#form").validate().form()http://docs.jquery.com/Plugins/Validation/Validator/form

    $(document.body).on('click', '.submitBtn', function(){
       var $form =$('#form'+this.id);
           $form.validate({
             submitHandler: function($form) {
               $($form).ajaxSubmit({  //need to properly refer to jQuery object
                 target: "#result"
               });
             }
           }).form();
    });
    

    【讨论】:

    • 嗯,它的说法是,“未捕获的类型错误:无法调用未定义的方法'form'”
    • 哦,看起来您在选择器中缺少# 符号。 $('#form'+this.id)
    • 现在可以使用了!一个变化是我需要正确地 jQuery 化 blah.ajaxSubmit 函数,我更新了你的答案以使其工作,感谢你的帮助!
    • 不客气。我只是认为form() 对该函数来说是一个非常糟糕的名称,而且根本不直观。
    • 同意,这东西让我发疯了
    【解决方案2】:

    我认为这个类似问题的答案可以帮助你很多https://stackoverflow.com/a/4359915/351366

    这里有一个让你的代码更具体的镜头

    创建一个自定义事件以在您的表单出现在页面上时触发

    $(document).bind('bindForm', function (e) {
        jQuery("#form").validate({
            submitHandler: function(form) {
              jQuery(form).ajaxSubmit({
                 target: "#result"
              });
            }
        });
    });
    

    然后当你的表单被加载时,触发你的自定义事件

    $(document).trigger('bindForm'); //trigger our validate form
    

    当你想检查你的表单在另一个函数中是否有效时

    $(".submitBtn").live("click",function() {
        if (!$("#form").validate().form()) {
            return;
        }
    });
    

    【讨论】:

    • 感谢您的链接和回答,Brian 的建议似乎更简洁一些,所以我会这样做,但很高兴知道
    • 别担心,我同意你可能想要的更多,而且我也学到了一些东西。
    猜你喜欢
    • 1970-01-01
    • 2015-08-13
    • 2011-09-09
    • 2012-08-31
    • 1970-01-01
    • 1970-01-01
    • 2016-05-28
    • 2015-01-27
    • 1970-01-01
    相关资源
    最近更新 更多