2009-07-10 24 views
0

Ich habe 2 Eingabefelder und ich verwende es mit einem Datepicker wie diesesjQuery UI Datepicker Frage

$("#depart, #return").datepicker({ 
    showOn: 'both', 
    buttonImage: 'images/icon_calendar.gif', 
    buttonImageOnly: true, 
    numberOfMonths:2, 
    dateFormat: 'dd-mm-yy' 
}); 

Irgendwann habe ich die Rückkehr Feld entfernen möchten, und ich tue es mit dem .remove() Methode. Dann benutze ich die Methode .after und füge dieses Feld wieder zum Formular hinzu. Die Datepicker-Funktionalität ist jedoch nicht verfügbar.

Es macht Sinn, aber ich weiß nicht, wie Sie eine Datumsauswahl dem neu erstellten Feld zuweisen?

+3

Warum verstecken Sie nicht einfach die "Rückkehr" -Sache für eine Weile? – TheVillageIdiot

Antwort

0

Nach dem Feld wieder hinzufügen, müssen Sie auf dem Feld rufen .datepicker

Working Demo to demonstrate

Hinweis zum Demo: Da die Schaltflächen hinzufügen fügt eine Texteingabe mit id = "return" hinzu, wobei mehr als eins dazu führt, dass die Eingabe, an die der Datepicker angehängt ist, durcheinander gebracht wird.

$("[where you're inserting]").after("<input id='return' type='text' />"); 

$('#return').datepicker({ 
    showOn: 'both', 
    buttonImage: 'images/icon_calendar.gif', 
    buttonImageOnly: true, 
    numberOfMonths:2, 
    dateFormat: 'dd-mm-yy' 
    }); 

würde ich nur hiding die Eingabe dann showing es wieder empfehlen, wenn es nötig ist, anstatt zu entfernen, dann in das DOM wieder einsetzen.

0

Ich glaube, Sie müssen neu zuweisen, nachdem Sie es erneut hinzufügen.

Etwas wie folgt aus:

$("#return").remove(); 

$("something").after(myReturnfield); 

$("#return").datepicker(myDatepickerSettings); 
+0

das ist, was ich dachte, aber ich bin mir nicht sicher, wenn wenn ich es entferne das ursprüngliche Datepicker-Objekt zerstört wird oder noch aktiv ist. – user119210

+0

Nein, ich denke, die Art, wie datepicker funktioniert, fügt nur ausgewählten Objekten einen Ereignis-Listener hinzu. Sobald das Objekt zerstört ist, funktioniert der Listener nicht mehr für diesen bestimmten, aber nicht für den anderen. –