2012-07-02 13 views
15

Sto utilizzando il DatePicker dell'interfaccia utente jQuery per le selezioni di date sul mio sito. Uno dei miei utenti ha appena effettuato l'aggiornamento alla versione più recente di Chrome, che ha un selettore di date nativo incorporato per HTML5. Il grosso problema in quanto le due interfacce utente si sovrappongono a vicenda. L'altro problema è quando l'utente invia una data, la data nel database ritorna a "0000-00-00" e produce dati non validi.HTML5 Data Input Type Interferire con jQuery Datepicker

Se rimuovo il jQuery datepicker, la maggior parte degli utenti che non utilizzano i browser più recenti non avrà un selettore di date popup. E chi ha il browser più recente avrà due calendari sovrapposti che interrompe l'applicazione. La mia domanda è: come disabilitare i browser più recenti dalla visualizzazione della funzione di data incorporata e continuare a utilizzare jQuery Datepicker?

risposta

38

Utilizzare Modernizr o una libreria simile per rilevare se il browser supporta lo input type=date e quindi caricare il datepicker dell'interfaccia utente jQuery, in caso contrario.

if (!Modernizr.inputtypes.date) { 
    $('input[type=date]').datepicker(); 
} 
+0

dove posizionare il codice sopra? Inoltre, chiamo lo script modernizr.js nella mia intestazione? – Neon

+1

Sì, è necessario fare riferimento a moderizr.js nell'intestazione con un tag script. E tu collocherai il codice qui sopra ovunque tu stia chiamando il metodo '.datepicker()'. Pubblicare il tuo codice esistente sarebbe d'aiuto. – jmoerdyk

+0

Questa soluzione ha funzionato per me! Ecco le istruzioni per l'installazione di Modernizr: http://modernizr.com/docs/#installing – Luke

0

A volte non è possibile modificare i tipi di modulo. Ad esempio, sto usando FormType di Symfony2 Bundle.

Ho riscontrato questo problema utilizzando Genemu jQuery Datepicker e ho risolto questo problema aggiungendo un pulsante di immagine del calendario e un po 'di codice CSS.

You can see final result in this link

Qui potete leggere la documentazione per l'aggiunta di immagine dell'icona: jQuery UI Datepicker

Poi, ho semplice aggiunto un css come questo (forse le regole di stile sarà diverso per voi):

form input[type=date] + img { 
    position: relative; 
    left: -25px; 
} 
0

Aggiungi l'attributo novalidate al modulo per rimuovere la convalida del build-in del browser.

<form action="login.htm" novalidate> 

Vai a questa link per maggiori informazioni.