2013-07-22 12 views
37

Ho utilizzato l'interfaccia utente di jQuery con Bootstrap e mi sembra di imbattersi in un problema che non ho avuto prima. Non sono sicuro di cosa è cambiato; Ho provato a impostare versioni diverse di jQuery e non ho aggiornato l'interfaccia utente di jQuery nel frattempo. Quindi non sono esattamente sicuro di cosa si sia rotto.Datepicker che restituisce un tipo non rilevatoErrore: undefined 'currentDay'

L'errore dalla console quando si fa clic su qualsiasi data nei rendimenti DatePicker:

Uncaught TypeError: Cannot set property 'currentDay' of undefined 

Il codice è abbastanza semplice come ci si aspetterebbe da un datepicker:

$(".datepicker").datepicker({ 
dateFormat: 'dd-mm-yy' 
}); 

Con la seguente HTML:

<input type="text" class="datepicker" /> 

È un bug che deve essere segnalato (poiché nessun altro Le partite di Google vengono consegnate) o è un'altra cosa che mi è sfuggita?

+1

Penso che ci possa essere qualche conflitto con datepicker di jQuery UI e datepicker di boostrap, suggerisco di sceglierne uno e di rimuovere l'altro dai file js. –

+0

Buona chiamata, ma sfortunatamente sto usando solo Bootstrap CSS con jQuery 1.7.1 e jQuery-UI 1.9.2. Al momento non utilizzo l'interfaccia utente di Bootstrap. –

+0

ho trovato che l'errore si verifica se uso #ID e non .class –

risposta

105

Ho trovato la soluzione. Dopo un lungo periodo di debug, ho scoperto che c'era uno <div> che aveva esattamente lo stesso ID, che si trova più in alto del campo di input. Pertanto, lo script ha preso la prima istanza che conteneva lo ID e ha scelto lo DIV anziché il campo input.

Ho rimosso/rinominato DIV e ha funzionato di nuovo bene.

+5

A volte è molto utile mettere la tua pagina in un validatore HTML!:) –

+0

grazie mille è 100% lavoro ma cambio

+1

stato 2 ore su questo bug, finalmente trovato la tua soluzione <3 – caroso1222

12

L'errore jQuery datepicker sopra riportato è generalmente causato dall'avere un controllo duplicato con lo stesso ID, indipendentemente dall'utilizzo dell'ID o di un altro selettore come classe css o nome campo per istanziarlo.

+0

Questo è esattamente il punto. Non utilizzare ID mai con datepicker, usa nomi di classi css personalizzati. Stavo affrontando quel problema quando si usava datepicker all'interno del popover. –

+0

@ tod-birdsall e altri, ho lo stesso problema collegato qui. https://stackoverflow.com/questions/45883482/datatable-datefilter-loads-correctly-but-throws-uncaught-typeerror-on-date-selec Ho provato molte soluzioni come ID, classi, ecc. Non importa, il problema si apre anche nel 2017, 4 anni dopo questa discussione originale. È un bug con l'interfaccia utente datatable o jquery? Stranamente, se provassi a creare un attributo nome nel controllo degli input, viene duplicato nella pagina ancora una volta. L'errore si verifica inevitabilmente. C'è una soluzione solida a questo problema. Sto usando l'ultima versione dell'interfaccia utente datatable e jquery. – webblover

1

Avevo anche questo errore. Ho scoperto che altrove sul modulo avevo alcuni attributi "for" per le etichette che non corrispondevano agli id ​​negli input del modulo - sembra che questo possa confondere anche datepicker. Una volta sistemati, tutto ha funzionato e l'errore è andato via. Prendi il consiglio di Andreas (+1 per quello!) E convalida i tuoi moduli: la barra degli sviluppatori Web di Chris Pederick ti offre un modo semplice per convalidare mentre procedi.

0

Potrebbe essere una casella di due input con la stessa classe senza ID diverso e per quello che si sta tentando per la selezione data. Se è lì dare due diversi ID funzionerà.

1

mettere un selettore.

<script> $("#formID #duplicatedId").datepicker({language: 'he'}); 
</script> 

FormID: ID del modulo che contiene l'input.

duplicatedId: input element's Id.

Problemi correlati