我有一个使用JQuery UI弹出窗口来显示表单的功能。当在表单上选择某些选项时,会出现新的选项,导致表单高度增加。这可能会导致主页面和JQuery UI对话框都出现滚动条。用户界面上存在两个滚动条是不美观且令人困惑的。
如何使JQuery UI对话框根据其内容自适应大小(可能缩小),同时不显示滚动条?我希望只有主页面上出现滚动条。
我有一个使用JQuery UI弹出窗口来显示表单的功能。当在表单上选择某些选项时,会出现新的选项,导致表单高度增加。这可能会导致主页面和JQuery UI对话框都出现滚动条。用户界面上存在两个滚动条是不美观且令人困惑的。
如何使JQuery UI对话框根据其内容自适应大小(可能缩小),同时不显示滚动条?我希望只有主页面上出现滚动条。
更新:自jQuery UI 1.8起,可行的解决方案(如第二个评论中所述)是使用:
width: 'auto'
使用autoResize:true选项。我来举个例子: <div id="whatup">
<div id="inside">Hi there.</div>
</div>
<script>
$('#whatup').dialog(
"resize", "auto"
);
$('#whatup').dialog();
setTimeout(function() {
$('#inside').append("Hello!<br>");
setTimeout(arguments.callee, 1000);
}, 1000);
</script>
这里有一个可用的示例: http://jsbin.com/ubowa
autoResize:true
创建对话框时设置属性。为了使其起作用,您不能为对话框设置任何高度。因此,如果您在创建方法或通过任何样式为对话框设置了固定像素高度,则autoResize属性将无法工作。
这适用于 jQuery UI v1.10.3
$("selector").dialog({height:'auto', width:'auto'});
我使用了以下属性,它对我来说很有效:
$('#selector').dialog({
minHeight: 'auto'
});
高度支持自动调整。
但宽度不支持!
可以通过获取显示的 div 的大小并设置窗口宽度来实现某种形式的自动化。
在 C# 代码中...
TheDiv.Style["width"] = "200px";
private void setWindowSize(int width, int height)
{
string widthScript = "$('.dialogDiv').dialog('option', 'width', " + width +");";
string heightScript = "$('.dialogDiv').dialog('option', 'height', " + height + ");";
ScriptManager.RegisterStartupScript(this.Page, this.GetType(),
"scriptDOWINDOWSIZE",
"<script type='text/javascript'>"
+ widthScript
+ heightScript +
"</script>", false);
}
var w = $('#dialogText').text().length;
$("#dialog").dialog('option', 'width', (w * 10));
对于调整对话框宽度,它做到了我需要的。
{'width':'auto'}
选项。相反,将以下内容添加到您的.dialog()
中:'open': function(){ $(this).dialog('option', 'width', this.scrollWidth) }