2010-03-05 2 views
13

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

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

Я делаю следующее:

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

Когда Lightbox закрывается, я заново добавив его содержимое на страницу (для того, чтобы не потерять DIV контента), и это, кажется, убивает вызов live(). [NB повторное Добавление данных происходит после оригинальное содержание уничтожается]

EDIT

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

EDIT # 2

Хорошо, использование .html() повторно Append вызывает события нужно переприсваивание, но элемент, чтобы связать все еще имеет класс hasDatepicker, который столовые с DatePicker() инициализация ,

Чтобы исправить, просто пользователь

 
$(this).removeClass('hasDatepicker') .datepicker({showOn: 'both'}).focus(); 

+0

Придерживайтесь предупреждения, я * думаю * вы обнаружите, что он возится с дампикером, и в прямом эфире на самом деле стреляют. –

+0

хороший звонок, отредактирует. –

+0

ударил по той же проблеме сегодня - через 2 года - и это сработало для меня. Спасибо, что вернулись и нашли время, чтобы добавить то, что сработало для вас. – jeremy

ответ

15

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

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

Если вы используете JQuery UI 1.7.2 с JQuery 1.4, некоторые эффекты уничтожения виджетов, он исчезает, и т.д., могут вызывать проблемы Datepicker. jQuery UI 1.8 исправляет это, сейчас он находится на статусе RC3.

+0

нет, извините, выставляется точно такое же поведение! –

+0

@Ed - В этом случае происходит замирание или изменение размера лайтбокса, любая анимация при закрытии? –

+0

Да, оно исчезает, однако это не нарушает других датпикеров (которые не входят в лайтбокс), и я нахожусь в jQuery 1.3.2 –

1

его возможно, что DatePicker позади коробки ...

я имел также с той же проблемой время назад.

положил это в файл css, и это сделало трюк для меня.

#ui-datepicker-div 
{ 
    z-index:9999999; 
} 
+0

Нет, как я уже сказал, работает в первый раз: я уже позаботился о z-index –

+0

Это работает для меня # ui-datepicker-div { z-index: 9999999!важный; } – Sanchitos

5
$(this).removeClass('hasDatepicker') .datepicker({showOn: 'both'}).focus(); 

решить мой вопрос

спасибо!

+0

Большое спасибо за этот намек! – ownking

+0

Многие многие Спасибо, брат. Ваш код работает для меня. +1 –

1
$("#datepicker").live('mousedown',function() 
{ 
$(this).datepicker({ 
dateFormat: 'dd/mm/yy', 
minDate: 0 
});  
}); 

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

0

Я была такая же проблема, но проблема была, у меня было много «плитки» с датами начала и окончания. Я не получал результаты, которые мне нужны, потому что идентификатор для каждой даты начала был таким же, как и дата окончания. Также с несколькими полями даты я получал возвращаемые значения 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 J AVASCRIPT ВКЛЮЧИТЬ]

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

}

});

Я надеюсь, что это помогает кто-то еще с теми же проблемами!

бо HÜTTINGER

0

Вы можете попробовать использовать .livequery Plugin

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

я нашел ответ here

+0

Это не сработало для меня. Я использовал сообщение fringd для преодоления этой проблемы. – Kwex

4

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

$.datepicker.setDefaults({ dateFormat: 'yy-mm-dd', ... }); 
$('input.date').live('focus', function() { 
$(this).datepicker().datepicker('show'); 
true; 
}); 
3

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

Не так, как .live() был удален из jQuery с версии 1.9 и должен быть заменен на .on(). Используя новый синтаксис, вы получите:

$(document).on('mousedown', '.datepicker', function(){ 
    $(this).datepicker({ 
    dateFormat: 'mm/dd/y 
    }); 
}); 
Смежные вопросы