(Mam nadzieję) Proste pytanie:jQuery-UI Datepicker: Draggable?
Czy możliwe jest przeciągnięcie interfejsu JQuery UI Datepicker? Jeśli tak, czy ktoś może mi podać przykładowy kod?
(Mam nadzieję) Proste pytanie:jQuery-UI Datepicker: Draggable?
Czy możliwe jest przeciągnięcie interfejsu JQuery UI Datepicker? Jeśli tak, czy ktoś może mi podać przykładowy kod?
$ (". Ui-datepicker"). Draggable() nie działa?
Kolejność jest ważna.
$('#myCalendarInput').datepicker();
$('#ui-datepicker-div').draggable();
EDIT: Istnieje subtelna różnica pomiędzy dostawami odpowiedź @JZ i kopalni. Przy użyciu przykładu JZ każdy datepicker na stronie będzie przeciągalny, nawet te, które są wbudowane (powiązane z DIV zamiast elementu wejściowego). Mój kod spowoduje, że podręczne datepickery będą przeciągane. Wtyczka datepicker tworzy pojedynczy DIV (nazwany ui-datepicker-div) dla wszystkich wyskakujących okienek i używa go ponownie dla dowolnego wejścia na stronie, do której został zastosowany datepicker. W przypadku wbudowanych DIV lub SPAN tworzy nowy, nienazwany datepicker wewnątrz DIV/SPAN, który ma klasę .ui-datepicker, ale nie ma nazwy. W tym przypadku mój kod nie spowoduje, że datepicker będzie można przeciągnąć, prawdopodobnie prawidłowe zachowanie, ale JZs będzie, ponieważ będzie dopasowywał się w oparciu o klasę.
Przykład:
<script type="text/javascript">
$(document).ready(function() {
$('#calendar').datepicker();
$('#calendar2').datepicker();
$('#calendar3').datepicker();
$('#ui-datepicker-div').draggable();
});
</script>
<div>
Calendar: <input id="calendar" type="text" /><br /> <-- draggable
Calendar2: <input id="calendar2" type="text" /><br/> <-- draggable
Fixed calendar: <div id="calendar3"></div> <-- fixed
</div>
Nie próbowałem tego, ponieważ odpowiedź JZ działała, ale czy nie napotkasz problemu z wieloma datepickerami na tej samej stronie z tym rozwiązaniem? –
Jest jedna różnica między moim kodem a JZ. Dla elementu wejściowego datepicker utworzy tylko jeden ui-datepicker-div i użyje go ponownie dla wszystkich wejść wymagających popup. Jeśli użyjesz wbudowanego kalendarza, kod JZ sprawi, że będzie on można przeciągać, podczas gdy mój nie będzie, ponieważ nie będzie miał tego samego identyfikatora. – tvanfosson
Ah. Dziękuję za wyjaśnienie. +1 –
Możesz dodać wydarzenie w datepicker i użyć go, aby go przeciągać.
//Add an event "onCreate"
$.datepicker._updateDatepicker_Old = $.datepicker._updateDatepicker;
$.datepicker._updateDatepicker = function(inst) {
this._updateDatepicker_Old(inst);
var onCreate = this._get(inst, 'onCreate');
if (onCreate !== null) {
onCreate(inst);
}
};
Po wywołaniu datepicker i zaimplementowaniu funkcji onCreate w celu przeciągnięcia.
$(function() {
//Create datepicker
$('#datepicker').datepicker({
onCreate: function(inst) {
$(inst.dpDiv).draggable();
}
});
});
Dzięki za odpowiedź. To interesujący pomysł, ale wydaje się zbyt skomplikowane, aby osiągnąć to samo, co zaakceptowana odpowiedź. Wolałbym nie zhakować rzeczy w interfejsie jQuery, jeśli nie muszę. –
Rzeczywiście robi. Jestem oczywiście nowy w jQuery UI, więc dziękuję za pomoc na noobish pytanie. –
nie ma problemu :) aby wiedzieć, jakie klasy i czy elementy zostały załadowane przez javascript, zainstaluj Firebuga. – zalew
Uwierz mi, Firebug jest moim przyjacielem. Po prostu nie wiedziałem, czy możliwe jest nawet przeciągnięcie datepaktera. –