jQuery函数在提交经过验证的表单时没有运行

时间:2012-03-02 15:55:54

标签: javascript jquery jquery-validate galleryview

我正在使用jquery galleryview插件,我添加了在点击链接(显示表单)时暂停幻灯片显示的功能,然后在单击关闭按钮时重新启动。

这样可以正常工作(见下文),但我还希望在提交表单时启动幻灯片。我可以通过将提交按钮添加到重新启动幻灯片的元素列表来实现,但如果表单没有通过验证,我不希望幻灯片重新启动。

这是我的galleryview代码(浓缩):

(function($){
    $.fn.galleryView = function(options) {
    // Some code
        return this.each(function() {
        // Some more code
            $("#closeEnquiry").click(function(){
                restartGallery();
            });

            function restartGallery(e) {
                // Code to restart gallery
            }
        }
    }
}

这是我的表单提交/验证代码(restartGallery函数不运行):

$(document).ready(function(){
    $("#enquiryForm").validate({
        debug: false,
        rules: {
            YourName: {
                required: true,
            },
            YourEmail: {
                required: true,
                email: true,
            },
        },
        messages: {
            YourName: "Please let us know who you are.",
            YourEmail: "A valid email will help us get in touch with you."
        },
        submitHandler: function(form) {

            $.post('projectform.php', $("#enquiryForm").serialize(), function(data) {
                closePopup();
                $('#enquiryFormContainer').prepend(data);
                restartGallery();  // This does not run...
            });

        }
    });
}); 

我是如何从validate函数运行restartGallery函数的?

1 个答案:

答案 0 :(得分:0)

在通过AJAX更改DOM后,JQuery对象变得无效(处置)后,我遇到了类似的问题。

因此,我的猜测是,在执行$('#enquiryFormContainer').prepend(data)之后,restartGallery()引用的某些DOM对象(及其事件处理程序)将变为无效。例如,如果restartGallery()引用了一个初始化的变量,如下所示:var myDiv = $("#myDiv"),则需要在AJAX调用完成后重新初始化它。