Javascript 无法从内部关闭Jquery对话框

Javascript 无法从内部关闭Jquery对话框,javascript,jquery,Javascript,Jquery,我试图从内部关闭Jquery对话框,但它不起作用 我使用了所有我能找到的结束变量,但没有一个有效 从主页面调用该对话框。当我按下对话框上的submit按钮时,一个表单被发布(这一切正常),但close事件不会触发 $(document).ready(function() { $("#eventForm").submit(function(e) { alert("HELLO"); //Can

我试图从内部关闭Jquery对话框,但它不起作用

我使用了所有我能找到的结束变量,但没有一个有效

从主页面调用该对话框。当我按下对话框上的submit按钮时,一个表单被发布(这一切正常),但close事件不会触发

        $(document).ready(function() {

            $("#eventForm").submit(function(e) {

                alert("HELLO");
                //Cancel the link behavior
                e.preventDefault();

                if(document.eventForm.title.value == ""){
                    alert("<?php echo $lang['titlemissing'] ?>");
                    return;
                }


                if(document.eventForm.activity.value == ""){
                    alert("<?php echo $lang['activitymissing'] ?>");
                    return;
                }

                var url = "calendar/eventsubmit.php<?php echo $qstr ?>";


                 $.post(
                 "calendar/eventsubmit.php<?php echo $qstr ?>",
                 $(this).serialize(),
                    function(data){
                          alert("closing");  
                           }   
                  );   
                  // NONE of the work ???
                  $(this).closest('.ui-dialog').dialog('close'); 
                  $(this).closest('#dialog').dialog('close');
                  $(this).closest('.ui-dialog-content').dialog('close');
                  $(this).dialog('destroy');
                  $(this).dialog('close');
                  $(this).closest('#dialog').close();
          $('#dialog').dialog('close');


            });
        });
$(文档).ready(函数(){
$(“#事件形式”)。提交(函数(e){
警惕(“你好”);
//取消链接行为
e、 预防默认值();
如果(document.eventForm.title.value==“”){
警报(“”);
返回;
}
如果(document.eventForm.activity.value==“”){
警报(“”);
返回;
}
var url=“calendar/eventsubmit.php”;
美元邮政(
“calendar/eventsubmit.php”,
$(this).serialize(),
功能(数据){
警报(“关闭”);
}   
);   
//没有工作???
$(this).closest('.ui dialog').dialog('close');
$(this).最近的('#dialog')。dialog('close');
$(this).closest('.ui对话框内容').dialog('close');
$(this.dialog('destroy');
$(this.dialog('close');
$(this).close(“#dialog”).close();
$('dialog')。dialog('close');
});
});
DOM确实包含ui对话框和ui对话框内容元素

<div tabindex="-1" class="ui-dialog ui-widget ui-widget-content ui-corner-all ui-draggable ui-resizable" role="dialog" aria-labelledby="ui-dialog-title-dialog" style="z-index: 1004; >
<div class="window ui-dialog-content ui-widget-content" id="dialog" style="min-height: 0px; width: auto; display: block; height: 105px;">
”;
返回;
}
}       
美元邮政(
“calendar/eventsubmit.php”,
$(this.serialize());
//关闭当前对话框
$(this).closest('.ui对话框内容').dialog('close');
//显示OK
$(“#dialog”).load(“calendar/actionsuccess.php”,function(){
$('#dialog')。dialog({
标题:"成功",,
自动调整大小:正确,
宽度:“自动”,
关闭:函数(事件,ui){window.location.href=“calendar.php”;}
})
});
});
});
谢谢,
Coen

如果将对话框关闭代码放入完成回调中:

function(data) {
    alert("closing");
    // .dialog('close') here  
}
然后,
这个
不再引用表单,它将是jQuery提供的任何上下文

您应该创建原始
的副本,然后参考该副本:

var form = this;
...

$.post(..., function(data) {
    ...
    $(form).closest('.ui-dialog-content').dialog('close');
});
你试过这个吗

$('.ui对话框').hide()

试试这个 它将触发对话框标题中的关闭按钮事件

关闭对话框对我来说效果很好

function btnClose() {
$(".ui-dialog-titlebar-close").trigger('click');
}

是否将对话框关闭在
$.post
完成回调中?是,但这也不起作用。我尝试了隐藏()这很有效。嗨,Alnitak,请注意close调用在$.post调用之外。但是我会尝试在post调用中添加close。也许这与对话框是外部php页面这一事实有关?我使用load()将外部页面加载到dialog中方法。@CoenDamen表单真的被提交了吗?也就是说,你看到警报了吗?嗨,是的,表单被提交了,一切都正常,除了close()@CoenDamen不应该发生。你一定有别的东西阻止它(
onBeforeDialogClose
?)嗨,卡比兰,这起作用了!close不起作用仍然很奇怪(??)
function btnClose() {
$(".ui-dialog-titlebar-close").trigger('click');
}