Jquery UI Datepicker未显示

问题描述 投票:26回答:20

UPDATE 我已经恢复到Jquery 1.3.2并且一切正常,不确定问题是什么/因为我没有更改jquery和ui库版本之外的任何其他内容。 更新结束

我有JQuery UI datepicker的问题。 datepicker被附加到一个类,该部分正在工作但是没有显示日期选择器。

这是我正在使用的datepicker代码以及当我点击具有类“.datepicker”的输入框时生成的内联样式。

$('.datepicker').datepicker({dateFormat:'dd/mm/yy'});

display:none;
left:418px;
position:absolute;
top:296px;
z-index:1;

如果我更改显示:无显示:阻止日期选择器工作正常,但选择日期时它不会关闭。

正在使用的Jquery库:

  • jQuery JavaScript Library v1.4.2
  • j kueri ui 1.8 j kuei ui ui dget t 1.8
  • jQuery UI Mouse 1.8 jQuery UI
  • 位置1.8 jQuery UI Draggable 1.8
  • jQuery UI Droppable 1.8 jQuery UI
  • Datepicker 1.8
jquery jquery-ui datepicker uidatepicker jquery-ui-datepicker
20个回答
11
投票

它是新的css文件不起作用。尝试在标题中包含旧的1.7。* css文件,然后重试。

另外,你是否尝试在构建之后立即执行.datepicker(“show”)?


1
投票

有同样的问题,即datepicker-DIV已被创建,但没有填充并显示单击。我的错是静态地给输入类“hasDatepicker”。 jQuery-ui帽子可以自己设置这个类。那对我有用。


0
投票

如果您在使用WordPress控制面板和使用ThemeRoller生成的主题时遇到此问题 - 请确保您使用的是1.7.3版本的主题,1.8.13将无效。 (如果仔细观察,则会呈现元素,但.ui-helper-hidden-accessible会导致元素无法显示。

目前的WP版本:3.1.3


0
投票

这是一个稍微不同的问题。有了我,日期选择器会显示但css没有加载。

我通过以下方法修复它:重新加载主题(转到jquery ui css,第43行并将其复制到那里以编辑你的themeroller主题)>没有高级选项的Resave>替换旧文件>尽量不要更改网址,看看是否有帮助同样。


0
投票
* html .ui-helper-hidden-accessible 
{
 position: absolute !important; 
 clip: rect(1px 1px 1px 1px); 
 clip: rect(1px,1px,1px,1px); 
}

这适用于IE,因此我应用此hack并在FF,Safari和其他方面正常工作。


0
投票

好的,我终于找到了我的解决方案。

如果您在视图上使用模板(使用Moustache.js或其他......),您必须考虑到您的某些类可以加载两次,或者稍后会创建。因此,您必须在创建实例后应用此函数$(".datepicker" ).datepicker();


0
投票

在我的案例中似乎发生了一些主题(cupertino / theme.css)。

问题是.ui-helper-hidden-accessible类具有clip属性,就像之前的用户所说的那样。

只是覆盖它,它会没事的

$(document).ready(function() {
    $("#datePicker").datepicker({ dateFormat: "yy-m-d" });
    $('#ui-datepicker-div').css('clip', 'auto');
});

0
投票

如果您使用的是Metro UI css(来自http://metroui.org.ua/的优秀免费地铁UI设置)的脚本,那也可能会发生冲突。在我的情况下,这是最近的问题。

因此,删除了metro UI的脚本引用(因为我没有使用它的组件),datepicker正在显示。

但你不能让地铁寻找jQuery-ui的datepicker

但在大多数情况下,正如其他人提到的,它与jQuery-UI javascripts的重复版本冲突。


0
投票

我遇到过类似的问题。它会在不同的标签下发布一次而不是第二次。我使用了一个类而不是一个id,并且到处使用相同的类名。对我来说,似乎datepicker激活一次,原始初始化必须在任何地方使用。人们可以使用destroy api对此进行编码,但对我而言,在任何地方使用相同的类都很容易。


0
投票

我找到了一个技巧解决方案。您可以使用以下代码。

$(".datepicker").datepicker({
/* any options you want */
beforeShowDay: function (date) {
    $('#ui-datepicker-div').css('clip', 'auto');
    return [true, '', ''];
    }
});

0
投票

这是完整的代码,它在我身边工作:只是测试。

<!doctype html>
<html lang="en">
   <head>
      <title>jQuery Datepicker</title>
      <link href="http://code.jquery.com/ui/1.10.4/themes/ui-lightness/jquery-ui.css" rel="stylesheet">
      <script src="http://code.jquery.com/jquery-1.10.2.js"></script>
      <script src="http://code.jquery.com/ui/1.10.4/jquery-ui.js"></script>
      <script>
         $(function() {
            $( "#datepicker1" ).datepicker();
         });
      </script>
   </head>
   <body>
      <p>Enter Date: <input type="text" id="datepicker1"></p>
   </body>
</html>

33
投票

我遇到了同样的问题,我发现在我的情况下,原因是datepicker div由于某种原因保留了类.ui-helper-hidden-accessible,它具有以下CSS:

.ui-helper-hidden-accessible {
 position: absolute !important;
 clip: rect(1px 1px 1px 1px);
 clip: rect(1px,1px,1px,1px);
}

我正在使用谷歌CDN托管的jquery版本,所以我无法修改代码或CSS。我也尝试过改变z-index而没有任何成功。对我有用的解决方案是将datepicker的clip属性设置回其默认值auto:

$('.date').datepicker();
$('#ui-datepicker-div').css('clip', 'auto');

由于这专门针对datepicker div,因此与其他小部件的意外副作用相比,整体上更改ui-helper-hidden-accessible类的可能性更小。


0
投票

刚发布,因为我的案件的根本原因尚未描述她。

在我的情况下,问题是“assets / js / fuelux / treeview / fuelux.min.js”正在添加一个构造函数.datepicker(),因此它覆盖了assets / js / datetime / bootstrap-datepicker.js

只是移动

就在$('。date-picker')解决了我的问题之前。


15
投票

这可能对某人有帮助。如果您复制并粘贴了表单数据(具有datepicker输入框,请确保您不会无意中复制class =“hasDatepicker”

这意味着您的输入框应如下所示:

<input id="dateChooser" name="dateChooser" type="text" value=""/>

<input id="dateChooser" name="dateChooser" type="text" value="" class="hasDatepicker">

我无意中犯了这个错误。删除类并允许jQuery UI调用似乎解决了它。

希望有人帮助!


10
投票

我有同样的问题:日期选择器已成功添加(甚至可以在FireBug中找到),但不可见。如果您使用FireBug从日期选择器div(ID:“ui-datepicker-div”)中删除“ui-helper-hidden-accessible”类,则日期选择器将变为可见并将正常工作。

如果在$(document).ready()函数的最后添加以下内容,它会将其应用于您页面上的每个日期选择器,并使它们全部工作:

$(document).ready(function() {
      //...
      //Put all of you other page setup code here
      //...

      //after setting everything up (including adding all Date Pickers)
      //apply this code to every Date Picker
      $('#ui-datepicker-div').removeClass('ui-helper-hidden-accessible');  
});

这是我最初的修复。之后,我尝试了Brian Mortenson上面提出的解决方案,它完美地工作,并且似乎比从元素中删除整个类更具侵入性。所以我修改了我的代码以将他的解决方案应用于我使用的方法(在文档设置的末尾应用,以便它适用于每个日期选择器,并且不需要重复):

$(document).ready(function() {
      //...
      //Put all of you other page setup code here
      //...

      //after setting everything up (including adding all Date Pickers)
      //apply this code to every Date Picker
      $('#ui-datepicker-div').css('clip', 'auto');  
});

希望这有助于让某人失意。

编辑:修复了代码语法错误。


4
投票

请确保您使用的是相同版本的jquery-ui'js'和'css'文件。有时这可能是个问题。


4
投票

我有1.7.2版本的jQuery和jQuery UI的类似问题。弹出窗口没有显示,上面没有任何适用的建议有帮助。在我的案例中有帮助的是取出了class =“hasDatepicker”(jquery-ui使用了这里接受的答案:jQuery UI datepicker will not display - full code included)来指示日期选择器已经添加到文本字段中。希望我早点找到答案。


3
投票

我使用JQuery-UI 1.8.21和JQuery-UI 1.8.22时遇到了同样的问题。

问题是因为我有两个DatePicker脚本,一个嵌入了jquery-ui-1.8.22.custom.min.js,另一个嵌入了jquery.ui.datepicker.js(我升级到1.8.21之前的旧版本)。

删除重复的jquery.ui.datepicker.js,解决1.8.21和1.8.22的问题。


2
投票

我换了线

.ui-helper-hidden-accessible {position:absolute!important; clip:rect(1px 1px 1px 1px); clip:rect(1px,1px,1px,1px); }

.ui-helper-hidden-accessible {position:absolute!important; }

现在一切正常。否则,请按照Soldierflup建议的那样尝试增加z-index。


1
投票

尝试将datepicker css的z-index更高一些(例如z-index:1000)。日期选择器可能显示在您的原始内容下。我有同样的问题,这帮助了我。

© www.soinside.com 2019 - 2024. All rights reserved.