jQuery live () не работает с датчиком выбора jQuery UI - PullRequest
13 голосов
/ 05 марта 2010

Хорошо, я пытаюсь использовать плагин FaceBox () для jQuery вместе с датой выбора jQuery UI ().

У меня есть привязка к входам лайтбокса при первом появлении лайтбокса, но впоследствии он не работает.

Я делаю следующее: $(function() { $('.jQueryCalendar').live('click', function () { $(this).datepicker({showOn: 'both'}).focus(); }); });

Когда лайтбокс закрывается, я повторно добавляю его контент на страницу (чтобы не потерять div контента), и это, кажется, убивает вызов live (). [Примечание: повторное добавление происходит после оригинальное содержимое уничтожено]

EDIT

Хорошо, событие live () запускается (спасибо Нику Крейверу за это), однако средство выбора даты больше не отображается. У кого-нибудь есть идеи почему?

РЕДАКТИРОВАТЬ # 2

Хорошо, использование .html () для повторного добавления приводит к необходимости повторного добавления событий, но элемент для привязки все еще имеет класс hasDatepicker, который смешивается с инициализацией datepicker ().

Чтобы исправить, просто пользователь $(this).removeClass('hasDatepicker') .datepicker({showOn: 'both'}).focus();

Ответы [ 8 ]

15 голосов
/ 05 марта 2010

Попробуйте и посмотрите, что произойдет:

$(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.

5 голосов
/ 14 января 2011
$(this).removeClass('hasDatepicker') .datepicker({showOn: 'both'}).focus();

решил мою проблему

спасибо! * * 1004

4 голосов
/ 29 февраля 2012

это сработало для меня

$.datepicker.setDefaults({ dateFormat: 'yy-mm-dd', ... });
$('input.date').live('focus', function() {
 $(this).datepicker().datepicker('show');
 true;
});
3 голосов
/ 04 февраля 2013

Это сработало для меня:

$('.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
  });
});
1 голос
/ 03 февраля 2011
$( "#datepicker" ).live('mousedown',function()
{
$(this).datepicker({ 
dateFormat: 'dd/mm/yy',
minDate: 0
});     
});

Попробуйте это ..

1 голос
/ 05 марта 2010

вполне возможно, что указатель даты находится за рамкой ...

У меня тоже была такая же проблема некоторое время назад.

поместил это в файл css, и это помоглоя.

#ui-datepicker-div
{
    z-index:9999999;
}
0 голосов
/ 02 февраля 2012

Вы можете попробовать использовать .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);
});

я нашел ответ здесь

0 голосов
/ 07 июля 2011

У меня была та же проблема, но проблема была в том, что у меня было много «плиток» с датами начала и окончания.Я не получил нужные результаты, потому что идентификатор для каждой даты начала был таким же, как и дата окончания.Кроме того, с несколькими полями даты я получал возвращаемые значения datePickers, полностью настроенные на первый экземпляр поля даты.

Этот код работал для меня:

[В 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 />

[В ВКЛЮЧЕНО JAVASCRIPT]

// 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);

}

});

Надеюсь, это поможет кому-то еще с такими же проблемами!

бо хаттингер

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...