Ich benutze Trent Richardsons jQuery UI Timepicker. Ich weiß, dass das Plugin geändert wurde, um $ .datepicker._selectDate zu überschreiben, so dass die Auswahl geöffnet bleibt, wenn ein Datum ausgewählt wird. Das ist großartig.ich bin nicht in der Lage, Ereignis zu datetimepicker Plugin zu binden
Ich wurde jedoch gebeten, den Picker schließen zu lassen, wenn Sie auf ein Datum doppelklicken. Alles andere bleibt gleich, einschließlich einer Schaltfläche zum Schließen der Auswahl, wenn sie fertig ist, usw., nur dass der Doppelklick ebenfalls funktionieren soll.
Ich habe versucht, das Doppelklick-Ereignis an Kalenderdaten auf verschiedene Arten zu binden (meistens Variationen von $('.ui-datepicker-calendar a').bind('dblclick', function() {/*do something*/});)
- in der Tat habe ich versucht, andere Ereignisse auch zu binden - und nichts scheint zu funktionieren. Ich habe versucht Vorschläge für How to close DateTimePicker with a double click ohne Freude geschrieben.
dies überhaupt möglich ist? Muss ich die onSelect Funktion modifizieren zwischen einem Klick und einem Doppelklick auf? (und wie, wenn event.type
nicht definiert ist?) zu unterscheiden Bin ich Bindung an das falsche Element? (Ich habe versucht, bindet auf $('.ui-datepicker-calendar a')
, $('#ui-datepicker-div')
, $('#ui-datepicker-div .ui-datepicker-calendar a')
und zahlreiche andere Variationen.)
Aus Gründen der Vollständigkeit, hier ist mein Code:
$('#date-range-from, #date-range-to').datetimepicker({
changeYear: true,
changeMonth: true,
controlType: 'select',
dateFormat: 'M dd, yy ',
minDate: 'Jan 01, 2010 ',
maxDate: 'Dec 31, xxxx '.replace('xxxx', new Date().getFullYear() + 1),
showAnim: '',
showMinute: false,
showOtherMonths: true,
showTime: false
}).on('change', function() {
var t = $(this),
date = t.val().slice(0, 12),
fromto = t.attr('id').replace('date-range-', ''),
time = t.val().slice(-5);
dashboardOpts.dateRange[fromto].date = date;
dashboardOpts.dateRange[fromto].time = time;
}).mousedown(function() {
$('#ui-datepicker-div').toggle();
$(this).blur();
});
$('#ui-datepicker-div .ui-datepicker-calendar a').bind('dblclick', function() {
console.log('I just want to see if this event can be bound!');
});
Vielen Dank im Voraus für jede Hilfe!
Edit: Zur Klarstellung von „Variationen ... .bind('dblclick', ...)
“ Ich meinte, dass ich versuchte .live('dblclick', ...)
und $(element).on('dblclick', ...)
und $(document).on('dblclick', element, ...)
(obwohl ich es als veraltet weiß).
Ich habe auch versucht, .stopPropagation()
und .stopImmediatePropagation()
, obwohl ich glaube nicht, dass dies ein Vermehrungsproblem ist.
Ich glaube, es gibt etwas im datetimepicker-Plugin-Code, der Ereignisse im Kalender entführt. Leider konnte ich es noch nicht finden. Jeder Einblick wird sehr geschätzt!
Vielen Dank dafür! Es funktioniert brillant! –
Die Lösung funktioniert gut für mich, solange ich Monate des Jahres nicht ändern. Wenn ich Monate ändern, erscheint der Datepicker Dialog wie es schließt und dann wieder auftaucht es gibt keine Arbeit für diese? Ich bin eine Date-Range-Lösung implementieren. http://pastebin.com/T8a2pUPv –
@ JaredKnipp aktualisierte Antwort mit möglichen Workaround, überprüfen Sie, ob es Ihren Bedürfnissen entspricht –