【问题标题】:jQuery UI datepicker positioningjQuery UI 日期选择器定位
【发布时间】:2011-12-09 15:57:33
【问题描述】:

我对 jQuery 非常陌生,并且正在尝试使用它。我一直在尝试使用jQuery UI Datepicker。在大多数情况下,它似乎工作正常。但是,我发现 Datepicker 的定位似乎出错了,即当父正文 CSS 指定时,它出现在屏幕的右侧而不是文本输入的正下方:

body {
      margin-left: auto; 
      margin-right: auto; 
      position : relative;
      width : 777px;
      }

但是,从正文的 CSS 中删除 width 属性,一切正常 - 日期选择器出现在文本输入字段的正下方。

body {
      margin-left: auto; 
      margin-right: auto; 
      position : relative;
      }

因此,添加宽度属性似乎导致日期选择器位于文本区域的右侧。我查看了 firebug 中的 CSS,发现 datepicker 采用了一些内联样式:

element.style {
    left: 499.5px;
    position: absolute;
    top: 33px;
    z-index: 1;
}

我想这是在 jQuery UI datepicker js 内部的某个地方创建的。

有人遇到过这种情况吗?如果是这样,我能做些什么(除了不指定正文宽度)以确保日期选择器出现在正确的位置?

完整的html如下:

<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>jQuery Datepicker</title>

        <link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.2/themes/start/jquery-ui.css" type="text/css"/>
        <style type="text/css">
        body {
            margin-left: auto;
            margin-right: auto;
            position: relative;
            width: 777px;
        }
        </style> 

       <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js" type="text/javascript"></script>
       <script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.2/jquery-ui.min.js" type="text/javascript"></script>
       <script type="text/javascript">   
        $(document).ready(function () {                
            $( "#dateEntry" ).datepicker({ dateFormat: 'yy-mm-dd' });
        });
       </script>
    </head>
    <body>
       <p>Date: <input id="dateEntry" type="text"/></p>
    </body>
</html>

【问题讨论】:

  • 你为什么要把 position:relative 放在你的身体上?对我来说似乎很奇怪......
  • 我为此创建了一个 jsfiddle,无法重现问题...
  • 我希望 body 中的子元素继承相对定位(我不是 CSS 专家,你可能已经注意到了!)。虽然从 body CSS 中删除位置 :relative 也解决了这个问题。我想我会从 body CSS 中删除 position : relative 并将其放在子元素中(子元素比我的简化示例中的要多)。
  • 我也无法使用 jsfiddle 重新创建它。如果您将代码保存到 html 文件然后使用浏览器打开该 html 文件,它似乎只会表现出来。就我而言,Firefox 3.6.24。
  • 如果我没记错的话,我也遇到了这个问题...我通过一些 CSS 更改修复了它。我猜 datepicker 中有一个类或 id,这是一个非常常用的词。所以不要使用“datepicker”之类的类或类似的类。也许您在 CSS 中存在冲突,只是相互覆盖。

标签: css jquery-ui datepicker


【解决方案1】:

您可能需要考虑直接在 jqui 的选择器之后调整日期选择器

例如jQuery UI Datepicker: Align below label issue

我认为日期选择器可能出于某种原因拾取身体的 css。

还要记住“!important”属性。如果必须,请使用它。这将覆盖任何继承的 CSS 规则。

例如

#thing {color:#000000 !important}

【讨论】:

    【解决方案2】:

    jQuery 和 jQuery UI 不支持 HTML 或 BODY 元素的大小和位置设置。 参考http://bugs.jqueryui.com/ticket/7170

    【讨论】:

      猜你喜欢
      • 2018-10-16
      • 1970-01-01
      • 2018-01-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多