Asp.net 当model设置为TRUE时,jQuery UI对话框出现问题
我正在用VisualStudio2008SP1和C#开发一个ASP.NETWebForm应用程序 我有以下ASPX页面:Asp.net 当model设置为TRUE时,jQuery UI对话框出现问题,asp.net,webforms,jquery-dialog,Asp.net,Webforms,Jquery Dialog,我正在用VisualStudio2008SP1和C#开发一个ASP.NETWebForm应用程序 我有以下ASPX页面: <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title></title> <script src="js/jquery-1.3.2.min.js" type="text/javascript"></scr
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title></title>
<script src="js/jquery-1.3.2.min.js" type="text/javascript"></script>
<script src="js/jquery-ui-1.7.2.custom.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function() {
$("#dialog").dialog({
autoOpen: false,
modal: true,
buttons: {
'Ok': function() {
__doPostBack('TreeNew', '');
$(this).dialog('close');
},
Cancel: function() {
$(this).dialog('close');
}
},
close: function() {
},
open: function(type, data) {
$(this).parent().appendTo("form");
}
});
});
function ShowDialog() {
$('#dialog').dialog('open');
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Button ID="TreeNew" runat="server" Text="Nuevo"
OnClientClick="ShowDialog();return false;" onclick="TreeNew_Click"/>
<asp:Label ID="Message" runat="server"></asp:Label>
<div id="dialog_target"></div>
<div id="dialog" title="Select content type">
<p id="validateTips">All form fields are required.</p>
<asp:RadioButtonList ID="ContentTypeList" runat="server">
<asp:ListItem Value="1">Text</asp:ListItem>
<asp:ListItem Value="2">Image</asp:ListItem>
<asp:ListItem Value="3">Audio</asp:ListItem>
<asp:ListItem Value="4">Video</asp:ListItem>
</asp:RadioButtonList>
</div>
</div>
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
</form>
</body>
</html>
$(文档).ready(函数(){
$(“#对话框”)。对话框({
自动打开:错误,
莫代尔:是的,
按钮:{
“确定”:函数(){
__doPostBack('TreeNew','');
$(this.dialog('close');
},
取消:函数(){
$(this.dialog('close');
}
},
关闭:函数(){
},
打开:功能(类型、数据){
$(this.parent().appendTo(“form”);
}
});
});
函数ShowDialog(){
$('dialog')。dialog('open');
}
所有表单字段都是必需的
正文
形象
音频
视频
当model设置为true时,页面开始增长(我知道因为两个滚动条都变小了,垂直条比水平条快)
查看页面源代码内部,我看到以下div位于forms标记外部:
<div class="ui-widget-overlay" style="z-index: 1001; width: 1280px; height: 65089px;" jQuery1267345392312="20"/>
如果将modal设置为false,则不会发生错误。我认为问题在于作为模态的div在表单之外
你怎么看?我认为你是对的,覆盖层会淡出页面的其余部分,但正如你所看到的,只需进入你正在使用的主题,你可能会攻击ui小部件覆盖层类,使其不会增长那么多,必须说它看起来非常奇怪,高度为65089像素。您可以尝试将最大高度设置为100%。尝试在对话框的关闭事件中执行此操作(在对话框
destroy()s
覆盖之前):
我认为这与jQuery UI overlay对象重用DIV而不是删除DIV这一事实有关。设置此样式将解决此问题
<style type="text/css">
.ui-widget-overlay
{
background-color: #000000;
left: 0;
opacity: 0.5;
position: absolute;
top: 0;
}
.ui-dialog
{
background-color: #FFFFFF;
border: 1px solid #505050;
position: absolute;
overflow: hidden;
}
</style>
.ui小部件覆盖
{
背景色:#000000;
左:0;
不透明度:0.5;
位置:绝对位置;
排名:0;
}
.ui对话框
{
背景色:#FFFFFF;
边框:1px实心#505050;
位置:绝对位置;
溢出:隐藏;
}
在IE 8中为我找到了修复它的方法:
“将class.ui小部件覆盖的position CSS属性从absolute更改为fixed为我们纠正了滚动条问题,但在IE 6中导致内存溢出和挂起。我通过在CSS文件中执行以下操作找到了解决方法:
.ui-widget-overlay { position: fixed; }
.ui-widget-overlay { _position: absolute; }
第一个条目用于纠正IE 8和works fab中的滚动条问题。第二个条目带有“_“仅在IE 6中拾取,并将位置设置回绝对位置,因为我们在IE 6中从未出现过滚动条问题。问题在于我没有任何主题附加到aspx页面。现在,这是一个jQuery主题而不是aspx主题。不管怎样,将这些类添加到css(或内联)中并进行调整,就可以开始了。
.ui-widget-overlay { position: fixed; }
.ui-widget-overlay { _position: absolute; }