在我的网站中,我一直在使用许多对话框,并且工作正常。但最后添加有奇怪的行为。当我打开对话框时,对话框显示不在屏幕中心,但向下移动 - 我必须向下滚动才能看到它。
我打开它后尝试使用此代码进行居中对话:
$('#mydialog').dialog({
autoOpen: false,
height:400,
width:600,
draggable: false,//solve another my problem with dialog
modal: true,
open: function(){
$('#mydialog').position().left = 0;
$('#mydialog').position().top = 0;
...
也尝试过:
position: 'top',
和
position: 'center',
和
position: ['center', 'top'],
和
open: function(){
$(this).scrollTop();
打开后屏幕上没有任何中心对话框。我正在使用jQuery v1.9.1和jQuery UI v1.10.3。
编辑: 定位和安装存在问题。相对绝对的。 我试过这段代码:
open: function(){
var x= 0;
var y= 0;
$(this).dialog('option', 'position', [y, x]);
位置0,0: 只需用鼠标滚轮向下滚动:
编辑:
隐藏元素:html对话框开头的<input type='text' style='width: 0; height: 0; top: -100px; position: absolute;'/>
没有问题。但是,如果我删除此行,则会导致另一个问题:jQuery UI datepicker opens automatically within dialog datepicker会在对话框打开后自动打开
(重要信息:对话框打开后点击表格中的第一列)
EDIT2: 有我的网站的切割版本: http://users16.jabry.com/testingpurpose/ko.asp 单击最后一个选项卡上第一列中的链接后,我需要始终居中对话框。单击后,打开的对话框可能没有弹出日历minidialog。
编辑3: 我的问题的图片:http://is.gd/1Hn5p6
答案 0 :(得分:1)
前段时间我遇到了类似的问题,基本上在初始化对话框时,它会将焦点设置为第一个活动表单元素,在您的情况下是日历。
快速解决方案就像是
open: function () {
$("#id-calendar").blur(); //or
$("#id-calendar").datepicker( "hide" );
}
此外,如果您在动态使用对话框,可能会出现意外问题,例如$('<div></div>').dialog(...);
如果从远程内容加载它们总是这样做:
$('.div').html(contentHtml).dialog(...);
答案 1 :(得分:0)
如果这是一个任何类型的弹出窗口,那么使其居中的定位逻辑应该是非常接近的:
left: $('#parent').width / 2 - ($('#thing-to-center).width / 2);
top: $('#parent').height / 2 - ($('#thing-to-center).height / 2);
但是如果这是一个你不熟悉的插件,并且偏移似乎很小且随意,我会调高浏览器控制台并使用检查器工具查找可能影响的奇怪填充/边距的子元素你的父对齐。