JQuery DatePicker для содержимого Ajax не удается после первой загрузки - PullRequest
1 голос
/ 11 февраля 2010

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

$('#datepicker').live('click', function() {
  $(this).datepicker({showOn:'both'}).focus();
});

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

Проблема в том, что после того, как я закрываю это диалоговое окно (которое удаляет его разметку из DOM) и снова открываю его, средство выбора даты больше не работает.

Я пытался вызвать $ ('# datepicker'). Die () после закрытия диалога, а затем повторно привязать к вводу #datepicker при повторном его открытии, но, похоже, это тоже не сработало.

Я действительно в тупике. Любое понимание будет с благодарностью.

Ответы [ 3 ]

1 голос
/ 15 декабря 2011

Это помогло мне сегодня. У меня такая же проблема. Я повторно инициализировал тот же элемент по его идентификатору в диалоге. В первый раз, я поднял диалог, он работал. После этого не будет. Итак, просто присвоив элементу класс datepicker, выполняющий $(".datepicker").datepicker() после, каждый раз, когда я снова открывал диалоговое окно, исправлялась проблема.

Не забудьте поместить этот класс в таблицу стилей, т.е.

.datepicker {}
0 голосов
/ 11 февраля 2010

Оказывается, использование класса вместо идентификатора (т. Е. «.Datepicker» вместо «#datepicker») решило проблему, хотя в DOM был только один случай появления #datepicker.

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

Так что это было своего рода комбинация обоих предложений, которые это исправили.

Спасибо вам обоим за помощь!

0 голосов
/ 11 февраля 2010

Я предполагаю, что удаление запускающего элемента из DOM - это ваша проблема. Почему бы просто скрыть ваше модальное окно, а затем показать , когда вам это нужно? Я верю, что это решит твою проблему.

...