jQuery中对话框的奇怪行为

时间:2014-06-24 06:06:30

标签: jquery jquery-ui scroll jquery-ui-dialog centering

在我的网站中,我一直在使用许多对话框,并且工作正常。但最后添加有奇怪的行为。当我打开对话框时,对话框显示不在屏幕中心,但向下移动 - 我必须向下滚动才能看到它。

我打开它后尝试使用此代码进行居中对话:

$('#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: enter image description here 只需用鼠标滚轮向下滚动: enter image description here

编辑:
隐藏元素: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

2 个答案:

答案 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);

但是如果这是一个你不熟悉的插件,并且偏移似乎很小且随意,我会调高浏览器控制台并使用检查器工具查找可能影响的奇怪填充/边距的子元素你的父对齐。