JQuery UI Datepicker не отображается

обновление
Я вернулся к jQuery 1.3.2, и все работает, не уверен, что проблема/была, поскольку я не изменил ничего, кроме версий библиотеки jquery и ui.
ОБНОВЛЕНИЕ

У меня проблема с jQuery интерфейса управления datepicker. Datepicker присоединяется к классу, и эта часть работает, но datepicker не отображается.

вот код datepicker I я использую и встроенный стиль, который генерируется, когда я нажимаю в поле ввода, которое имеет класс".элемент управления datepicker".

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

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

Если я изменю дисплей: нет для отображения: блок datepicker работает нормально, за исключением того, что он не закрывается, когда я выбираю дату.

используемые библиотеки Jquery:

  • jQuery JavaScript библиотека v1.4.2
  • jQuery UI 1.8 jQuery UI виджет 1.8
  • jQuery UI мышь 1.8 jQuery UI
  • установки 1.8 jQuery UI перетаскиваемый 1.8
  • jQuery UI Droppable 1.8 jQuery UI
  • Datepicker 1.8

19 ответов


это файл css в новом не работает. Попробуйте включить старый 1.7.* css-файл в вашем заголовке тоже, и повторите попытку.

кроме того, вы пытались сделать.datepicker ("показать") сразу после его создания?


у меня была та же проблема, и я обнаружил, что в моем случае причиной был datepicker div по какой-то причине сохраняет класс .ui-helper-hidden-доступный, который имеет следующий CSS:

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

Я использую версии jQuery, размещенные в Google CDN, поэтому я не мог изменить код или CSS. Я также попытался изменить Z-индекс без какого-либо успеха. Решение, которое сработало для меня, состояло в том, чтобы вернуть свойству clip для datepicker значение по умолчанию, авто:

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

поскольку это специально предназначено для datepicker div, меньше шансов непреднамеренных побочных эффектов на других виджетах, чем изменение класса ui-helper-hidden-accessible в целом.


у меня была та же проблема: выбор даты был успешно добавлен (и даже может быть найден в FireBug), но не был виден. Если вы используете FireBug для удаления класса " ui-helper-hidden-accessible "из div выбора даты (идентификатор:" ui-datepicker-div"), выбор даты становится видимым и будет работать как обычно.

Если вы добавляете в самом конце $(документ).функция 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');  
});

Это было мое первое исправление. Впоследствии я попробовал решение, предложенное выше Брайаном Мортенсоном, и оно сработало отлично и казалось менее инвазивным, чем удаление целого класса из элемента. Поэтому я изменил свой код, чтобы применить его решение к методу, который я использовал (применить в конце настройки документа, чтобы он применялся к каждому сборщику дат и не требовал повторения):

$(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');  
});

надеюсь, это поможет кому-то отклеиться.

изменить: Исправлена ошибка синтаксиса кода.


это может быть полезно для кого-то. Если вы скопировали и вставили данные формы (в которой есть поле ввода datepicker, убедитесь, что вы не ненароком скопировать class= "hasDatepicker"

Это означает, что поле ввода должно выглядеть так:

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

не

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

Я сделал эту ошибку по неосторожности. Удаление класса и разрешение вызова jQuery UI появилось, чтобы исправить это.

надеюсь, что кто-то поможет!


пожалуйста, убедитесь, что вы используете тоже вариант файлов jquery-ui 'js' и 'css'. Иногда это может быть проблемой.


У меня была аналогичная проблема с 1.7.2 версиями jQuery и jQuery UI. Всплывающее окно не появлялось, и ни одно из применимых предложений выше не помогло. Что помогло в моем случае, так это вынуть класс= "hasDatepicker", который (как отмечает принятый здесь ответ:jQuery UI datepicker не будет отображаться - полный код включен) используется jQuery-ui, чтобы указать, что datepicker уже добавлен в текстовое поле. Хотел бы я найти этот ответ раньше.


У меня была та же проблема с использованием jQuery-UI 1.8.21 и jQuery-UI 1.8.22.

проблема была в том, что у меня было два сценария DatePicker, один встроенный с jquery-ui-1.8.22.традиция.минута.js и С помощью jQuery.пользовательский интерфейс.элемент управления datepicker.js (старая версия перед обновлением до 1.8.21).

удалить дублировать С помощью jQuery.пользовательский интерфейс.элемент управления datepicker.js, решить проблему для 1.8.21 и 1.8.22.


Я изменил строку

.ui-helper-hidden-доступный { позиция: абсолютная !важно; клип: прямоугольник(1 пиксел 1 пиксел 1 пиксел 1 пиксел); клип: прямоугольник(1 пикселей,1 пиксель,1 пикселей,1 пиксель); }

до

.ui-helper-hidden-доступный { позиция: абсолютная !важно; }

и все работает теперь. В противном случае попробуйте увеличить Z-индекс, как предложил Soldierflup.


попробуйте поставить z-индекс вашего datepicker css намного выше (например, z-index: 1000). Вероятно, datepicker отображается под вашим исходным контентом. У меня была та же проблема и это помогло мне.


была такая же проблема, что datepicker-DIV был создан, но не заполнен и не отображается при нажатии. Моя вина заключалась в том, чтобы дать вход классу "hasDatepicker" статично. jQuery-UI hat, чтобы установить этот класс самостоятельно. тогда это работает на меня.


Если у вас возникла эта проблема при работе с панелью управления WordPress и использовании темы, сгенерированной ThemeRoller - убедитесь, что вы используете 1.7.3 версию темы, 1.8.13 не будет работать. (Если вы посмотрите внимательно, элемент отображается, но .ui-helper-hidden-accessible заставляет его не отображаться.

текущая версия WP: 3.1.3


Это немного другая проблема. Со мной выбор даты будет отображаться, но css не загружается.

я исправил это: перезагрузите тему (перейдите в jQuery ui css, строка 43 и скопируйте url-адрес, чтобы отредактировать тему themeroller) > Resave без дополнительных опций > заменить старые файлы > попробуйте не изменять URL-адреса и посмотреть, поможет ли это.


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

Это просто работает для IE, поэтому я применяю этот хак и отлично работает на FF, Safari и других.


хорошо, я наконец нашел свое решение.

Если вы используете шаблоны в своем представлении (используя усы.js или другие...), необходимо учитывать, что некоторые классы могут быть загружены дважды, или будут созданы позже. Итак, вы должны применить эту функцию $(".datepicker" ).datepicker(); после создания экземпляра.


Кажется, происходит с некоторыми темами (Купертино/тема.CSS) в моем случае.

и проблема .ui-helper-скрытый доступный класс, который имеет свойство clip, как и предыдущие пользователи.

просто заменить его и все будет хорошо

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

Если вы используете скрипты metro UI css (отличный бесплатный metro UI set от http://metroui.org.ua/), это тоже может столкнуться. В моем случае это было проблемой в последнее время.

Итак, удалена ссылка скриптов metro UI (поскольку я не использовал его компоненты), datepicker показывает.

но вы не можете получить метро искать datepicker jQuery-ui

но в большинстве случаев, как уже упоминалось, его столкновение с дублирующими версиями jQuery-UI яваскрипты.


У меня были похожие проблемы. Он будет запускаться один раз, а не 2-й раз под разными вкладками. Я использовал класс вместо идентификатора и везде использовал одно и то же имя класса. Мне кажется, datepicker активируется один раз, и исходная инициализация должна использоваться везде. Вероятно, можно кодировать вокруг этого с помощью api destroy, но для меня было легко просто использовать один и тот же класс везде.


Я нашел решение трюк. Вы можете использовать приведенные ниже коды.

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

вот полный код, он работает с моей стороны: просто тест.

<!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>