2011-11-20 4 views
6

Estoy usando el selector de fecha de jQuery para uno de los campos de mi formulario: fecha de nacimiento.jQuery selector de fecha no muestra el valor de texto original

El campo se genera mediante PHP y se completará con la fecha de nacimiento original del usuario. Al hacer clic en el campo aparece el widget, que funciona perfectamente bien.

Sin embargo, el cuadro de texto no muestra el valor original, aunque aparezca en el código fuente del navegador. Estoy usando Google Chrome.

El siguiente es el código de jQuery:

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

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

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

Este es el código PHP:

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

Y el siguiente es el código HTML (copiado del código fuente):

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

Por favor, dime qué pasa. Gracias.

+0

Lo intenté con el selector de fecha jQuery ordinario y no puedo reproducirlo. Lo más probable es que algún otro código que tenga (ya sea del lado del servidor o del lado del cliente) sobrescriba el valor y lo borre. –

+0

@ShadowWizard: Marque [esta demostración] (http://jsfiddle.net/z7YJ5/1/) VS [este] (http://jsfiddle.net/z7YJ5/2/). Despeja el campo y parece que hace otro datepicker. Probablemente me falta algo (solo revisé rápidamente los documentos), pero realmente hubiera esperado que el código de OP funcionara. Chime si sabes algo, estoy interesado. –

+0

@Madmartigan buena captura, no se dio cuenta del doble uso de datepicker - suena como un error en su código, sin esperar ser llamado más de una vez. Todas las opciones se deben dar en una sola llamada, no hay daño en eso. –

Respuesta

4

No estoy seguro de por qué , pero esta línea está despejando el valor:

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

Trate de añadir la opción como esta, si es posible, worked for me en Firefox y Chrome:

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

Oh, eso funcionó. ¡¡¡Muchas gracias!!!=) –

+0

Esto solo funciona para mostrar la fecha precompilada, pero no para el formato cuando se elige una nueva fecha – Graham

1

Intente utilizar otro navegador como Firefox para comprobar si es un problema de compatibilidad del navegador, no está seguro acerca de PHP, pero en su asp.net es una opción para configurar la visibilidad del texto cuadro de texto a la verdadera

+0

En mi caso fue un problema de compatibilidad. Trabajando en Chrome y Safari, pero no en Firefox. – J0ANMM

1

Debería usar setDate en lugar de configurar el valor de entrada directamente.

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

Este es el que funciona correctamente, no la respuesta aceptada – Graham

0

Sobre la base de la respuesta de Nik Éste es cómo tengo que trabajar en "todo javascript"

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

La respuesta aceptada sólo resuelve la mitad del problema. Aparece el valor, pero el formato de la fecha después de ser seleccionado por el selector de fecha es incorrecto.

Mi ejemplo utiliza un formato de fecha diferente (p. Ej., 01-Sep-2014), ya que acabo de copiar el código, finalmente me puse a trabajar. También tuve que descomponerlo para obtener el elemento y el valor, ya que era esporádico en el mejor de los casos cuando estaba alineado.

Cuestiones relacionadas