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

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

У меня проблема с датчиком JQuery UI. Средство выбора даты прикрепляется к классу, и эта часть работает, но средство выбора даты не отображается.

Вот код средства выбора даты, который я использую, и встроенный стиль, который генерируется, когда я щелкаю поле ввода с классом «.datepicker».

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

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

Если я изменю display:none на display:block, средство выбора даты работает нормально, за исключением того, что оно не закрывается, когда я выбираю дату.

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

  • Библиотека JavaScript jQuery v1.4.2
  • jQuery UI 1.8 Виджет jQuery UI 1.8
  • Пользовательский интерфейс jQuery Мышь 1.8 Пользовательский интерфейс jQuery
  • Позиция 1.8 jQuery UI Перетаскиваемый 1.8
  • Пользовательский интерфейс jQuery Droppable 1.8 Пользовательский интерфейс jQuery
  • Датапикер 1.8

person scott    schedule 21.04.2010    source источник
comment
кажется, что display:none и display:block переопределяют методы show()/hide(), которые вызывает средство выбора даты. Вы уверены, что где-то еще нет правила CSS, которое конфликтует?   -  person Jeriko    schedule 21.04.2010
comment
Отображение: ни один не создается плагином datepicker, и к нему не прикреплен CSS из моей таблицы стилей.   -  person scott    schedule 21.04.2010


Ответы (21)


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

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

person user227353    schedule 21.04.2010
comment
У меня была такая же проблема только что, решил обновить мой файл css до последней версии, и это сработало. У меня была 1.8.16, а сейчас 1.8.21. Просто дополнение к этому ответу. - person Bird87 ZA; 11.06.2012

У меня была та же проблема, и я обнаружил, что в моем случае причиной был div datepicker, по какой-то причине сохраняющий класс .ui-helper-hidden-accessible, который имеет следующий 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 для средства выбора даты его значение по умолчанию, auto:

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

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

person undefined    schedule 05.03.2011
comment
Я пробовал это, но это не сработало для меня. Я использую Jquery UI 1.8.18 и Jquery 1.7.1, так что это очень актуально. - person Adamantus; 13.03.2012
comment
можете привести пример кода? Есть множество причин, по которым это могло не сработать. Мое первое предположение будет заключаться в том, что эти строки не вызываются или что селекторы не выбирают то, что вы ожидаете от них. - person undefined; 13.03.2012
comment
Работал отлично для меня. Спасибо. - person Nathan; 14.08.2012
comment
Я вообще удалил класс. $('#ui-datepicker-div').removeClass('ui-helper-hidden-accessible'); для того же эффекта. - person Milo LaMar; 31.08.2012
comment
Большое спасибо! Ваше решение - единственное, которое сработало для меня. Ты обалденный. Продолжайте хорошую работу. - person ; 19.11.2012
comment
Спасибо! Это сработало для меня, используя jQuery-1.9.1 и jQuery UI 1.10.2. - person Gorgsenegger; 17.04.2013

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

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

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

НЕТ

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

Я сделал эту ошибку непреднамеренно. Удаление класса и разрешение вызова пользовательского интерфейса jQuery, похоже, исправили это.

Надеюсь, это поможет кому-то!

person Bren1818    schedule 14.09.2017
comment
Именно такой. - person Tomas Kubes; 20.10.2017
comment
Я так долго ищу, чтобы найти этот ответ! Браво... Я думал, что схожу с ума. - person Bruce; 10.01.2019
comment
Я тоже. Спасибо! - person John Rand; 24.07.2019

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

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

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

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

Надеюсь, это поможет кому-то оторваться.

РЕДАКТИРОВАТЬ: исправлена ​​ошибка синтаксиса кода.

person olen_garn    schedule 10.05.2011

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

person Spaceploit    schedule 17.02.2015
comment
Это объяснение помогло мне понять, что если вы дублируете элементы формы, у которых уже есть класс hasDatepicker, дублированные средства выбора даты не будут работать. Пришлось удалить класс из клонированных форм - что-то вроде $("#sibling_"+nextSibling).find('input').removeClass("hasDatepicker"); - person Tycon; 09.07.2021

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

person Anticipator    schedule 03.02.2012

У меня была такая же проблема с использованием 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.

person Jeremie    schedule 29.07.2012

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

person Soldierflup    schedule 21.04.2010

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

.ui-helper-hidden-accessible { position: absolute !important; клип: прямоугольник (1px 1px 1px 1px); клип: прямоугольник (1px, 1px, 1px, 1px); }

to

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

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

person Kyle Robson    schedule 17.02.2011
comment
Все еще не работал для меня. Я попробовал это предложение, я попробовал предложение @brian, я проверил соответствие исходных версий и настройку z-index. Ни один из них не работал. Мое средство выбора даты отображается без какого-либо стиля отображения, как если бы все было прозрачным, кроме текста. - person Mike S.; 10.06.2012
comment
@МайкС. похоже, что файл CSS, содержащий средство выбора даты, не применяется или после него применяются другие правила. Можете ли вы проверить средство выбора даты в инструментах разработчика вашего браузера (предпочтительно Chrome) и посмотреть, какие правила применяются и откуда? Если их там нет, проверьте правильность пути к файлу. - person undefined; 30.07.2012

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

person SchließMuskelKater    schedule 23.07.2015

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

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

person Andy    schedule 25.06.2011

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

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

person Adamantus    schedule 13.03.2012

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

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

person Ricardo Cruz    schedule 29.11.2011

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

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

person Mc-    schedule 08.04.2012

В моем случае это происходит с некоторыми темами (cupertino/theme.css).

И проблема заключается в классе .ui-helper-hidden-accessible, у которого есть свойство clip, как говорили предыдущие пользователи.

Просто перезапишите и все будет хорошо

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

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

Итак, удалена ссылка на сценарии пользовательского интерфейса метро (поскольку я не использовал его компоненты), отображается средство выбора даты.

Но вы не можете заставить метро искать средство выбора даты jQuery-ui

Но в большинстве случаев, как уже упоминалось, это конфликтует с повторяющимися версиями javascripts jQuery-UI.

person Tejasvi Hegde    schedule 11.12.2013

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

person Jeff Bluemel    schedule 11.06.2015

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

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

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

<!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>
person Hrushi    schedule 16.06.2016

Просто пост, потому что первопричина моего случая не была описана ей.

В моем случае проблема заключалась в том, что «assets/js/fuelux/treeview/fuelux.min.js» добавлял конструктор .datepicker(), поэтому он переопределял assets/js/datetime/bootstrap-datepicker.js.

просто перемещая

быть незадолго до того, как $('.date-picker') решил мою проблему.

person D.Firka    schedule 05.03.2019

Была такая же проблема при работе с модальным бутстрапом. Я случайно установил z-index для .ui-datepicker, используя !important, который переопределяет атрибут css z-index средства выбора даты для элемента. Удаление !important сработало.

person Irshu    schedule 23.11.2019