2014-05-10 18 views
11

C'è un modo per distruggere il bootstrap datepicker aggiornando dinamicamente le sue opzioni come il formato, beforeShowDay, ecc.? So che il DatePicker dell'interfaccia utente jQuery ha un metodo destroy ma Bootstrap non lo ha. Ha solo il metodo .('remove') ma non funziona.Re-initialize o destroy Bootstrap datepicker dinamicamente

Il mio obiettivo è quello di modificare le opzioni del DatePicker quando si cambia un input, ad esempio:

$('#employee').change(function() { 
    $('#date').datepicker('destroy'); //not working 'cause bootstrap hasnt a destroy method 
    $('#date').hide(); 
}); 

Poi chiamo la funzione di inizializzazione quando cambia l'ingresso:

function updateCalendar(){ 
    $('#date').datepicker({ 
      format:"dd/mm/yyyy", 
      beforeShowDay: updateC //function that modifies the available days to show 
    });  
} 

risposta

25
$('.datepicker').datepicker('remove'); 

Assicurati di avere il tuo oggetto di selezione data in DOM prima di rimuoverlo. Senza rimuovere è possibile nascondere il calendario e modificare il formato della data e aggiornarlo.

$('.datepicker').datepicker('update'); 
+0

Stava distruggendo il DatePicker prima di inizializzarsi per la prima volta. Dopo aver controllato che funzionasse :) Grazie! – dan

1

in realtà ho trovato più per rimuovere solo l'ID dell'elemento, clonare, e aggiungere l'ID di nuovo in.

+0

Puoi per favore mostrargli come hai fatto? – NullPointer

+0

Sì, sarebbe stato più utile se ci hai mostrato in codici di esempio che cosa esattamente hai fatto. –

0

Propably si utilizza datepicker con ingresso BTN gruppo, voglio dire con l'icona di un appuntamento pulsante. Quindi, non dovresti scegliere solo l'elemento di input quando vuoi distruggerlo e reinizializzarlo. Dovresti selezionare div con "date-picker", quindi rimuovere e init di nuovo.

-1
forceParse: 1 

Nelle vostre opzioni. Analizzerà il valore del campo data di input ogni volta.

0

si può usare:

$('#element_id').datepicker('destroy');

Ho chiamato questo appena fuori dalla mia chiamata AJAX. La mia chiamata ajax stava creando dinamicamente il datepicker. Dopo che la chiamata è stata effettuata, ho distrutto l'oggetto.

come di seguito:

$.ajax({ url: 'my_ business_functions.php', 
    data: {func_call: 'my_method_name', my_parameter: my_parameters}, 
    type: 'post', 
    success: function(output) { 
     //all my stuffs here 
     $('#element_id').val(datepicker_value); 
     } 
    }); 
    $('#element_id').datepicker('destroy'); 

Ciò è servito il mio scopo.