jqueryui对话框 - 第二个对话框自动关闭

时间:2012-10-15 21:35:55

标签: jquery jquery-ui-dialog

概述:定义了一个基本的jqueryui对话框,然后根据需要使用注入的标记打开。

问题:第一个例子有效,但第二个例子(看似相似)没有。它们打开的顺序没有区别。即使我先打开非工作的,它也行不通。我很欣赏第二双眼睛,看看我是否做过明显迟钝的事情。

注意:这些是来自大型代码字段的代码段,因此请不要检查匹配的括号。除了星号包围的第二个jqueryui对话框外,所有代码都正常工作。 Ajax返回正确的数据等。第二个对话框上方的警报甚至可以工作,但该对话框从不显示(代码中有警报或没有警报)。

第二个对话框调用在ajax回调函数中。我是否需要以某种方式使用.on()方法将返回的数据绑定到#alert div? (我不应该这样认为......至少div - 一个空的dlg盒子 - 应该显示,不是吗?)如果是这样,那会是什么样的?

HTML:

<div id="alert" title="Alert"></div>

JAVASCRIPT:

$(function() {
    $( '#alert' ).dialog({
        autoOpen:false,
    });

$(document).on('click', '.mledit', function(event) {
    //company_id is actually the user_id
    var user_id = this.id.split( 'editcopro_' )[1];
    $.ajax({
        type: "POST",
        url: "ajax/ax_all_ajax_fns.php",
        data: 'request=edit_company_data&user_id='+user_id,
        success:function(data){
            $('#co_label').html(data);
            $('#co_label').dialog({
                autoOpen: true,
                height: 600,
                width: 800,
                modal: true,
                buttons: 
                    {
                    //***************************************
                    //******** THIS WORKS *******************
                        Test: function() {
                            $( '#alert' ).html( 'Hello there' );
                            $( '#alert' ).dialog( 'open' );
                            return false;
                    //***************************************
                        },
                //... etc ...
    $.ajax({
        type: "POST",
        url: "ajax/ax_all_ajax_fns.php",
        data: 'request=index_list_contacts_for_client&user_id=' + user_id,
        success: function(data) {
            $('#contact_table').html(data);
            var tbl = $('#injected_table_of_contacts');

                $(this).dialog({
                    autoOpen: false,
                    height: 400,
                    width: 600,
                    modal: true,
                    buttons: 
                        {
                            Okay: function() {
                                $.ajax({
                                    type: "POST",
                                    url: "ajax/ax_all_ajax_fns.php",
                                    data: 'request=update_edited_contact_data&contact_id='+contact_id+'&fn='+fn+'&ln='+ln+'&em='+em+'&cp='+cp,
                                    success: function(data) {
                                        alert(data);
                                    //**********************************
                                    //***** THIS DOES NOT: *************
                                        $( '#alert' ).html( data );
                                        $( '#alert' ).dialog( 'open' );
                                    //**********************************
                                        window.location = '' //THIS LINE AUTO-CLOSES THE DLG!;
                                    }
                                });
                                $( this ).dialog( "close" );
                            } //END ELSE
                        },
                        Cancel: function() {
                            $( this ).dialog( "close" );
                            window.location = '';
                        }
                    } /*,
                    //IMPORTANT DISCOVERY: Having this close section AUTO-CLOSES the prev dialog popup!
                    close: function() {
                        //alert('here i am');
                        window.location = 'index.php';
                    }*/
            })
        }
    });



});
/*********** >Snip< *************/

完整的代码是巨大的(r)所以我已经剪掉了问题的必要位。请不要过于仔细地查找匹配的括号等.warning()工作正常,它只是.dialog()调用 - 而只是第二个 - 前面的工作正常(包括来自内部的对话调用)对话框)。

2 个答案:

答案 0 :(得分:0)

这个底线,您是否忘记关闭ajax电话?

}});

答案 1 :(得分:0)

解决。请参阅代码中我评论解决方案的两个位置。谁是个笨蛋?