Jquery对话框验证

Jquery对话框验证,jquery,ajax,validation,jquery-ui,dialog,Jquery,Ajax,Validation,Jquery Ui,Dialog,我的问题是,当我关闭一个ajax加载的JqueryUI对话框,然后打开另一个对话框时,我应用于该对话框的所有JavaScript都无法工作 我注意到的几件事是,当我关闭它时,html只是变得隐藏起来,实际上并没有被删除。调用$dialog.dialog(“销毁”);没用。删除隐藏的html也不起作用。我不确定如何销毁验证对象(文档没有对此做任何说明),或者在对话框关闭时这样做是否有帮助。我基本上只想在关闭对话框时回到初始页面加载阶段,因此打开另一个对话框将重新创建验证对象等等 我对TinyMCE

我的问题是,当我关闭一个ajax加载的JqueryUI对话框,然后打开另一个对话框时,我应用于该对话框的所有JavaScript都无法工作

我注意到的几件事是,当我关闭它时,html只是变得隐藏起来,实际上并没有被删除。调用$dialog.dialog(“销毁”);没用。删除隐藏的html也不起作用。我不确定如何销毁验证对象(文档没有对此做任何说明),或者在对话框关闭时这样做是否有帮助。我基本上只想在关闭对话框时回到初始页面加载阶段,因此打开另一个对话框将重新创建验证对象等等

我对TinyMCE等其他小部件有这个问题,一旦我关闭第一个对话框并打开其他小部件,它就不会再次初始化

下面是一个简化版本的代码,用于一个这样的对话框-

var create_contact_dialog = function () {
    var $contactDialog = $('<div></div>')
    .dialog({
        autoOpen: false,
        dialogClass: "contact_form_dialog",
    });
    $contactDialog.dialog('open');
    return $contactDialog;
};

$('#open_contact_form').live('click', function () {
    var $contactDialog = create_contact_dialog();
    $contactDialog.load('/contact_form', function () {
        contact_form_validator = $("#contact_form").validate({
            rules: {
                name: {
                    required: true
                },
            }
        });
    });
});
var create\u contact\u dialog=函数(){
变量$contactDialog=$(“”)
.对话({
自动打开:错误,
dialogClass:“联系形式对话”,
});
$contactDialog.dialog('open');
返回$contactDialog;
};
$('open#contact_form').live('click',function(){
var$contactDialog=create_contact_dialog();
$contactDialog.load('/contact_form',函数(){
联系人表单验证程序=$(“#联系人表单”)。验证({
规则:{
姓名:{
必填项:true
},
}
});
});
});

任何指点都很感激

一旦对话框关闭,您就需要删除它的DOM,因为每次加载的表单都有相同的ID(这会导致后续加载仍然使用该ID引用第一个DOM)。您可以通过提供删除对话框内容的
close
函数回调来执行此操作:

var create_contact_dialog = function () {
    var $contactDialog = $('<div></div>')
    .dialog({
        autoOpen: false,
        dialogClass: "contact_form_dialog",
        close: function() {
            $contactDialog.remove();
        }
    });
    $contactDialog.dialog('open');
    return $contactDialog;
};
var create\u contact\u dialog=函数(){
变量$contactDialog=$(“”)
.对话({
自动打开:错误,
dialogClass:“联系形式对话”,
关闭:函数(){
$contactDialog.remove();
}
});
$contactDialog.dialog('open');
返回$contactDialog;
};
我在这里提供了一个示例,如果删除关闭功能,您将看到警报不起作用


一旦对话框关闭,您需要删除它的DOM,因为每次加载的表单都有相同的确切ID(这会导致后续加载仍然引用具有该ID的第一个DOM)。您可以通过提供删除对话框内容的
close
函数回调来执行此操作:

var create_contact_dialog = function () {
    var $contactDialog = $('<div></div>')
    .dialog({
        autoOpen: false,
        dialogClass: "contact_form_dialog",
        close: function() {
            $contactDialog.remove();
        }
    });
    $contactDialog.dialog('open');
    return $contactDialog;
};
var create\u contact\u dialog=函数(){
变量$contactDialog=$(“”)
.对话({
自动打开:错误,
dialogClass:“联系形式对话”,
关闭:函数(){
$contactDialog.remove();
}
});
$contactDialog.dialog('open');
返回$contactDialog;
};
我在这里提供了一个示例,如果删除关闭功能,您将看到警报不起作用