2009-07-10 11 views
0

J'ai 2 champs d'entrée et je l'utilise avec un DatePicker comme celui-cijQuery UI DatePicker question

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

À un moment donné, je veux supprimer le champ de retour et je le fais avec le .remove() méthode. Ensuite, en utilisant la méthode .after, j'ajoute à nouveau ce champ au formulaire. Mais la fonctionnalité datepicker n'est pas disponible.

Cela a du sens, mais je ne sais pas comment réaffecter un sélecteur de date au champ nouvellement créé?

+3

pourquoi ne pas simplement cacher la chose "retour" pendant un moment? – TheVillageIdiot

Répondre

0

Après avoir ajouté à nouveau le champ, vous devez appeler .datepicker sur le terrain

Working Demo to demonstrate

Remarque sur les démo: depuis les boutons d'ajout va ajouter une entrée de texte avec id = "return", en ajoutant plus d'un va gâcher l'entrée à laquelle le Dateur de date est attaché.

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

Je recommande juste hiding l'entrée puis showing à nouveau lorsque vous avez besoin, plutôt que de supprimer puis re-insérer dans le DOM.

0

Je crois que vous devez réaffecter juste après l'avoir rajouté.

Quelque chose comme ceci:

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

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

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

c'est ce que je pensais mais je ne suis pas sûr si quand je l'enlève l'objet datepicker initial est détruit ou est toujours actif. – user119210

+0

Non, je pense que la façon dont datepicker fonctionne ne fait qu'ajouter un écouteur d'événement aux objets sélectionnés. Une fois l'objet détruit, l'écouteur ne fonctionnera pas pour celui-ci en particulier, mais il n'affectera pas l'autre. –