2011-11-20 2 views
6

Sto usando il selettore di date di jQuery per uno dei campi del mio modulo - Data di nascita.Il selettore di date jQuery non mostra il valore di testo originale

Il campo viene generato utilizzando PHP e verrà popolato con la data di nascita originale dell'utente. Facendo clic sul campo viene visualizzato il widget, che funziona perfettamente.

Tuttavia, la casella di testo non mostra il valore originale, anche se appare nel codice sorgente del browser. Sto usando Google Chrome.

seguito è riportato il codice jQuery:

$(function() 
{ 
    $("#DatePicker").attr("readonly","readonly"); 

    $("#DatePicker").datepicker({ 
     changeMonth: true, 
     changeYear: true, 
     yearRange: "1950:+10" 
    }); 

    $("#DatePicker").datepicker("option","dateFormat","dd MM yy"); 
}); 

Questo è il codice PHP:

echo "<INPUT TYPE=\"TEXT\" NAME=\"$FieldName\" VALUE=\"$OriginalData\" ID=\"DatePicker\" CLASS=\"FullLength\">"; 

E il seguito è riportato il codice HTML (copiato dal codice sorgente):

<INPUT TYPE="TEXT" NAME="DateOfBirth" VALUE="18 August 2012" ID="DatePicker" CLASS="FullLength"> 

Per favore dimmi cosa c'è che non va. Grazie.

+0

Provato solo ora con il normale selettore di date jQuery e non può riprodurre. Molto probabilmente un altro codice che hai (lato server o lato client) sta sovrascrivendo il valore e cancellandolo. –

+0

@ShadowWizard: Controlla [questa demo] (http://jsfiddle.net/z7YJ5/1/) VS [questa] (http://jsfiddle.net/z7YJ5/2/). Cancella il campo e sembra che faccia un altro datepicker. Probabilmente mi manca qualcosa (ho controllato solo rapidamente i documenti), ma mi sarei davvero aspettato che il codice OP funzionasse. Suona se sai qualcosa, sono interessato. –

+0

@Madmartigan buona cattura, non ho notato il doppio utilizzo di datepicker - sembra un bug nel loro codice, non mi aspettavo di essere chiamato più di una volta. Tutte le opzioni devono essere fornite in un'unica chiamata, nessun danno in questo. –

risposta

4

Io non so perché , ma questa linea è di compensazione del valore:

$("#DatePicker").datepicker("option","dateFormat","dd MM yy"); 

Prova ad aggiungere l'opzione in questo modo, se possibile, worked for me in Firefox e Chrome:

$("#DatePicker").datepicker({ 
    changeMonth: true, 
    changeYear: true, 
    dateFormat: "dd MM yy" 
}); 
+0

Oh quello ha funzionato. Grazie mille!!!=) –

+0

Funziona solo per visualizzare la data pre-compilata, ma non per il formato quando viene selezionata una nuova data – Graham

1

Prova a utilizzare un altro browser come Firefox per verificare se un problema di compatibilità del browser, non è sicuro su php ma su asp.net loro è un'opzione per impostare la visibilità del testo testo su true

+0

Nel mio caso si trattava di un problema di compatibilità. Lavorare su Chrome e Safari, ma non su Firefox. – J0ANMM

1

È necessario utilizzare setDate anziché impostare direttamente il valore di input.

$("#birthday").datepicker() 
.datepicker("option", "dateFormat", 'dd.mm.yy') 
.datepicker('setDate', '<?= $humanoid->getBirthday()->format('d.m.Y') ?>'); 
+0

Questa è quella che funziona correttamente - non la risposta accettata – Graham

0

Sulla base di risposta di Nik Ecco come ho preso a lavorare in "tutti i javascript"

$(".popup-date").each(function(){ 
    var ele = $(this); 
    var v = ele.val(); 
    ele.datepicker().datepicker("option", "dateFormat", "dd-M-yy").datepicker("setDate", v); 
    }); 

La risposta accettata risolve solo metà del problema. Il valore viene visualizzato, ma il formato della data dopo essere stato selezionato dal selettore di date è quindi errato.

Il mio esempio utilizza un formato di data diverso (ad esempio 01-Sep-2014) poiché ho appena copiato il codice che finalmente ho avuto modo di funzionare. Ho anche dovuto scomporlo per ottenere l'elemento e il valore in quanto era sporadico al meglio quando era allineato.