【问题标题】:TypeError: jQuery(...).validate is not a functionTypeError: jQuery(...).validate 不是一个函数
【发布时间】:2013-07-11 11:00:46
【问题描述】:

我正在将动态 html 内容添加到另一个 html 内容中。这基本上是一个编辑表单 html 视图,但是当我尝试验证 from 时,它给了我“TypeError: jQuery(...).validate is not a function”错误。我正在使用 jQuery 1.6.2 版本。

function validate_edit_venue() {
    jQuery('#venue_edit_form').validate({
        rules: {
            venueName: {
                required: true,
                minlength: 1,
                maxlength: 50
            },
            venueDescription: {
                required: false,
                lettersonly: true,
                maxlength: 150
            },
            venueType: {
                required: true
            }

        },
        messages: {
            venueName: {
                required: "Venue name is required",
                minlength: "Minimum 1  character required",
                maxlength: "Should not exceed 50 characters"
            },
            venueDescription: {
                maxlength: "Should not exceed 150 characters"
            },
            venueType: {
                required: "Please select a venue type"
            }

        }
    });
}

这是我的 jQuery 验证。我在 jQuery 编辑表单脚本中调用此函数。谁能帮我解决这个问题?这个问题可能是重复的,但大多数是由于jQuery版本问题,所以我无法通过它们获得正确的答案。

      jQuery('#venue_edit_save').live('click', function(){

       validate_edit_venue();

       if(jQuery("#venue_edit_form").valid())
       {
            var directory_id = jQuery(this).attr('directory_id');
            var venue_type = jQuery(this).attr('venue_type');
            var venueName = jQuery('#venue_name').val();
            var venueDescription = jQuery('#description').val();
            var venueType = jQuery('#venue_types option:selected').val();
            var venueImage = jQuery('[name="profile_image'+directory_id+'"]').val();
            jQuery.blockUI();
            jQuery.ajax({
                    type: 'POST',
                    cache: false,
                    dataType: 'json',
                    url: baseurl+'catalog/catalog/action/venues/edit_venue',                
                    data:{'directory_id':directory_id,'venueName':venueName,'venueDescription':venueDescription,'venueType':venueType,'venueImage':venueImage},                

                    success: function(data)
                    {                    
                        if(data.status == 'success')
                        {
                        /*if(venue_type == venueType)
                        {
                            jQuery('#Venue_'+directory_id).replaceWith(data.html);
                        }
                        else
                        {
                            location.reload();                              
                        }*/
                            jQuery('#Venue_'+directory_id).replaceWith(data.html);
                            show_messages(data.status,data.msg);
                            setTimeout(jQuery.unblockUI);
                            jQuery('#edit-dining-venue-block').hide();
                            location.reload();
                        } 
                        else if(data.status == 401)
                        {
                            redirect_login_timed_out();                         
                        }
                    /*else
                    {
                        show_messages(data.status,data.msg);
                        setTimeout(jQuery.unblockUI);
                        jQuery('#edit-dining-venue-block').hide();
                    }*/
                    },
                    error:function (jqXHR)
                    {
                        if(jqXHR.status == 401)
                        {
                            redirect_login_timed_out();
                        }
                        setTimeout(jQuery.unblockUI);
                    }

            }); 
       }
  });

   // Hiding the edit venue view when clicking the cancel button
   jQuery('#venue_edit_cancel').live('click', function(){

       jQuery('#edit-dining-venue-block').hide();

   });              

});

这是发生错误的地方。此 jQuery 保存编辑后的信息:验证时。

谢谢。

【问题讨论】:

  • jQuery .validation 是一个插件,除了 jQuery “普通”库文件之外,你还有 .js 文件吗?
  • 是的。我已经添加了所有需要的插件,包括验证插件。
  • 确保 jQuery-validation 与您使用的 jQuery 版本兼容。
  • 请向我们展示您是如何包含脚本的。
  • 是的。验证插件与我使用的 jQuery 版本兼容。实际上,此错误仅发生在此动态 html 内容中。在其他地方,不会发生此错误,并且表单已正确验证。例如:在“添加”表单中,验证正常工作,但在编辑表单中,它不起作用,而是给出上述错误。编辑表单是一个动态的html内容。

标签: javascript jquery jquery-validate


【解决方案1】:

在我看来,您的 ajax 调用返回脚本标签的情况。

我认为这里发生的情况是您的 ajax 调用返回 DOM 以及另一个 jquery 脚本标签,该标签覆盖了您的 jquery,并且您丢失了所有插件,并且发生了其他不好的事情

【讨论】:

  • 是的。我包括其他一些包含脚本标签的 php 文件。所以如果是这个原因,如果脚本标签覆盖,我可能不得不寻找另一种解决方案,是吗?
  • 是的,这是你的问题。 ajax 调用应该返回没有脚本标签的 html。您可能必须为其创建一个特殊文件,而不是重复使用现有文件
  • 我设法解决了这个问题。我用 jq 代替了 jQuery,它起作用了。在我的脚本上方运行了另一个 js 文件,在该脚本中使用了 jq 而不是 jQuery。所以现在它工作得很好。感谢您的帮助。
猜你喜欢
  • 2015-05-09
  • 1970-01-01
  • 1970-01-01
  • 2015-04-30
  • 1970-01-01
  • 2020-10-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多