JQuery live() не работает с jQuery UI datepicker
Хорошо, я пытаюсь использовать плагин FaceBox() для jQuery вместе с jQuery UI datepicker().
У меня есть привязка к входам lightbox'd при первом появлении лайтбокса, но он не работает впоследствии.
Я делаю следующее:
$(function() {
$('.jQueryCalendar').live('click', function () {
$(this).datepicker({showOn: 'both'}).focus();
});
});
Когда лайтбокс закрывается, я повторно добавляю его содержимое на страницу (чтобы не потерять содержимое div), и это, кажется, убивает вызов live(). [NB повторное добавление происходит после уничтожения исходного содержимого]
ИЗМЕНИТЬ
Хорошо, событие live() запускает событие IS (спасибо Nick Craver за это), однако datepicker больше не отображается. Кто-нибудь есть идея, почему?
ИЗМЕНИТЬ № 2
Хорошо, использование .html() для повторного добавления приводит к необходимости перезаписи событий, но у элемента, которому требуется привязка, есть класс hasDatepicker, который беспорядочен с инициализацией datepicker().
Чтобы исправить, просто пользователь
$(this).removeClass('hasDatepicker') .datepicker({showOn: 'both'}).focus();
Ответы
Ответ 1
Попробуйте это и посмотрите, что произойдет:
$(function() {
$('.jQueryCalendar').live('click', function () {
$(this).datepicker('destroy').datepicker({showOn: 'both'}).focus();
});
});
Если вы используете jQuery UI 1.7.2 с jQuery 1.4, некоторые эффекты уничтожают виджеты, они исчезают и т.д. могут вызывать проблемы с дампикером. jQuery UI 1.8 исправляет это, он в состоянии RC3 на данный момент.
Ответ 2
$(this).removeClass('hasDatepicker') .datepicker({showOn: 'both'}).focus();
решил мою проблему
спасибо!
Ответ 3
это сработало для меня
$.datepicker.setDefaults({ dateFormat: 'yy-mm-dd', ... });
$('input.date').live('focus', function() {
$(this).datepicker().datepicker('show');
true;
});
Ответ 4
Это сработало для меня:
$('.datepicker').live('mousedown', function(){
$(this).datepicker({
dateFormat: 'mm/dd/y
});
});
Не так, как .live()
был удален из jQuery с 1.9 и должен быть заменен на .on()
. Используя новый синтаксис, вы получите:
$(document).on('mousedown', '.datepicker', function(){
$(this).datepicker({
dateFormat: 'mm/dd/y
});
});
Ответ 5
возможно, что datepicker находится за коробкой...
У меня также была та же проблема, что и раньше.
поместите это в файл css, и это сделало трюк для меня.
#ui-datepicker-div
{
z-index:9999999;
}
Ответ 6
$( "#datepicker" ).live('mousedown',function()
{
$(this).datepicker({
dateFormat: 'dd/mm/yy',
minDate: 0
});
});
Попробуйте это.
Ответ 7
У меня была такая же проблема, но проблема была в том, что у меня было много "плиток" с датами начала и окончания.
Я не получал результаты, которые мне нужны, потому что идентификатор для каждой даты начала был таким же, как и дата окончания. Кроме того, с несколькими полями даты я получал возвращаемые значения datePickers, заданные в первом экземпляре поля даты.
Этот код работал у меня:
[IN HTML]
<label for="display_date">Display/Start Date</label><br />
<input type="text" class="dateStart" name="display_date" value="" /><br />
<label for="display_date_end">End Date</label><br />
<input type="text" class="dateEnd" name="display_date_end" value="" /><br />
[IN JAVASCRIPT INCLUDE]
// set the datePicker on the start and end fields
$('input.dateStart').datepicker({dateFormat:"yy-mm-dd", changeYear: true});
$('input.dateEnd').datepicker({
dateFormat:"yy-mm-dd",
changeYear: true,
beforeShow: function(){
var value = $(this).siblings('.dateStart').val();
$(this).datepicker('option', 'minDate', value);
}
});
Я надеюсь, что это поможет кому-то еще с теми же проблемами!
bo huttinger
Ответ 8
Вы можете использовать . livequery плагин
$('.jQueryCalendar').livequery(function() {
// This will fire for each matched element.
// It will also fire for any new elements added to the DOM.
$(this).datepicker(options);
});
я нашел ответ здесь