维护一个包含动态内容的对话框

时间:2010-04-30 13:52:43

标签: jquery jquery-ui jquery-ui-dialog

我会与以下

进行对话
$("#statusbox").dialog({
    autoOpen: false,
    bgiframe: true,
    modal: true,
    width: 'auto',
    height:'auto',
    title:"Check Order Status",
    buttons: {
        Find: function() {
            get_status();
        },
        Close: function() {
            $(this).dialog('close');
        }
    }
});

当用户点击查找按钮时,它会运行Ajax并将命令返回到对话框,并且它会动态调整大小,但它只会向下扩展框。有没有办法让盒子上下延伸,以便对话框保持居中?

此外,如果有足够的内容,那么它可能会超出页面的范围,所以我认为我可以使用最大高度来防止这种情况,但如果他们重新调整窗口大小,我该怎么办?

我尝试添加maxHeight:500,这并没有阻止它从底部延伸。

2 个答案:

答案 0 :(得分:1)

你有代码将对话框放在我假设的屏幕中间吗?在重新填充新信息后运行它。

编写一些新代码,确保框不高于窗口。如果是,请将对话框的高度设置为窗口的高度(如果要填充,则设置为较小),并将overflow设置为scroll。每当他们调整窗口大小时也运行此代码。

答案 1 :(得分:1)

好吧,我已经有了它的工作,有点不是100%,但非常接近。

我将位置设置为“顶部”,因为auto总是向下展开。然后我根据建议添加了一个开放式功能in a ticket作为解决方法,让autoHeight尊重maxHeight

那就是说,我真的很想使用身高,而不是文件,我不知道为什么我不得不从中减去200?

$("#statusbox").dialog({
    autoOpen: false,
    bgiframe: true,
    modal: true,
    width: 'auto',
    height:'auto',
    position: 'top',
    title:"Check Order Status",
    open: function(event, ui) {
        $(this).css({'max-height': $(document).height()-200, 'overflow-y': 'auto'});
    },
    buttons: {
        Find: function() {
            get_status();
        },
        Close: function() {
            $(this).dialog('close');
        }
    }
});