jquery datepicker funktioniert nicht, nachdem ajax-Aufruf, wenn Ihr schon auf der Seite
Ich habe einen datepicker-input (nennen wir ihn X) auf meiner Seite schon. Es gibt eine Taste, wenn Sie auf es, es macht einen ajax-call und druckt einige html Sachen auf der Seite. Innen, die ajax-Antwort, es ist noch ein datepicker-input (nennen wir es Y), Werke, die, wenn Sie es öffnen auf eine eigenständige Seite, sondern in der ajax-Aufruf, der Y nicht zeigen, das datepicker Feld (es funktioniert auf X aber).
Y hat bereits die "hasDatepicker" Klasse, ich habe versucht es zu entfernen, dann erinnern das der datePicker-Methode, aber kein Glück. Der einzige Weg, ich habe es geschafft, es zu beheben, war das entfernen der "ui-datepicker-div" aus dem Quelltext der Seite und den Rückruf der datepicker auf Y. Aber diese Zeit X nicht mehr funktioniert!
Was ist falsch mit dieser Art der Verwendung datepicker? Eine Möglichkeit, dass ich beide von Ihnen arbeiten, richtig?
UPDATE: habe ich es geschafft dieses Problem zu beheben, durch ausführen dieser beiden Befehle vor dem ajax-Aufruf und dann erinnert datepicker nach dem ajax-Aufruf:
jQuery('.datepicker').datepicker("destroy");
jQuery('#ui-datepicker-div').remove();
Ich weiß nicht, warum, aber der destroy Befehl nicht löscht die ui-datepicker-div, und ich habe es manuell entfernen! Keine Ahnung, über dieses?
- Der code ist zu groß, um es zu kopieren hier...ich werde versuchen, zu bauen, ein Beispiel draus und poste es
- Vielen Dank @Hossain. Sie löste mein problem auch 🙂
Du musst angemeldet sein, um einen Kommentar abzugeben.
Für dynamisch hinzugefügte datpicker
Demo
.ajaxComplete
- Funktion.Brach ich meinen Kopf auf dieses problem für ein paar Tage und endlich habe ich es geschafft, es zu beheben.
Brauchen Sie nur zu entfernen, bevor Sie erneut initialisieren von DOM-paar div-wurden erstellt von jQuery.
Ist es:
jQuery('#ui-datepicker-div').remove();
jQuery nicht neu initialisieren, DatePicker, wenn dieses div ist in DOM.
Meinen funktionierenden code hier:
Genießen, Jungs!
Meine funktionierende Lösung für dieses Problem ist, entfernen Sie Klasse
hasDatepicker
von element mit datepicker nach dem ajax-Aufruf, dann neu initialisieren datepickerElemente Hinzugefügt, die von AJAX haben keine Methoden oder Ereignisse gebunden, um Sie inheritly, wie Sie erstellt wurden, NACHDEM das DOM geladen wurde. Sie können arbeiten, um dieses mit event-delegation. Jedoch, es gibt eine bessere Methode, um das, was Sie zu tun versuchen. Anstelle der Zugabe der datepicker nach, warum nicht, nur haben Sie es versteckt? Wenn das nicht eine option, dann müssen Sie erneut binden, das datepicker-Instanz in der ajax-Erfolg.