2010-08-16 11 views
30

Me gustaría agregar selectores de fecha nativos a mi aplicación, que actualmente usa un sistema heredado, rodado en casa. El soporte de entrada de fecha aún no está muy extendido, pero si pudiera presentar ambas implementaciones según la compatibilidad, sería ideal.Especificar el valor de salida de un tipo de entrada HTML5 = fecha?

¿Hay alguna forma de especificar el resultado del valor proporcionado por un marcador de fecha HTML? El valor predeterminado para opera es yyyy-mm-dd, y muy explícitamente necesito dd-MMM-yyyy.

¿Hay alguna forma de controlar esta salida, actualmente?

+0

No estoy seguro si esto es realmente lo que quiere, pero puede encontrar valor en esto: http://flowplayer.org/tools/dateinput/index.html – treeface

+0

¿Qué quiere decir exactamente por valor de salida? ¿El valor * value * o el * display * value? –

+1

@Pekka: Ambos, realmente. –

Respuesta

23

HTML5 date input El campo es específica acerca del formato que utiliza: RFC 3339 full-date

¿Es posible cambiar el selector de fechas legado a utilizar el formato aaaa-mm-dd (y actualizar el lado del servidor que lee eso)?

Supongo que no, entonces puede agregar un código de pegamento Javascript que escucha un evento de cambio en la entrada HTML5 y actualiza un campo de fecha oculta para coincidir con el formato del selector de fecha heredado (convierte aaaa-mm-dd a dd-MMM-aaaa).

+43

Esto me pone triste. –

+8

dd-mmm-yyyy ni siquiera es independiente de la configuración regional (suponiendo que mmm es "Jan", "Feb", etc.). Por lo tanto, es bastante "triste" si sus aplicaciones/secuencias de comandos requieren dicho formato en lugar de una configuración estándar uno que no contiene cadenas localizadas. – ThiefMaster

+9

@ThiefMaster: los usuarios que esperan el 03-FEB-2011 para cada entrada de fecha en toda una aplicación seguirán esperando ese formato. aaaa-mm-dd no es legible ni esperado para los ciudadanos de los EE. UU. (de los que el cliente era en ese momento), y el formato no funciona por completo si solo se necesita un mes y un día, o un día y una hora. Cuando existe la convención, la convención prevalece sobre otros principios de diseño en muchos casos para maximizar la usabilidad, especialmente cuando el cliente tiene poca rotación. –

0

El formato del campo fecha de HTML es estándar. Si bien no es posible cambiar esto, puede convertir fácilmente de un objeto de fecha al formato que está buscando dado que su usuario tiene habilitado JavaScript.

// Converts any valid Date string or Date object into the format dd-MMM-yyyy 
function dateTransform(d) { 
    var s = (new Date(d)).toString().split(' '); 
    return [s[2],s[1],s[3]].join('-'); 
} 

De lo contrario, tendrá que enviar en formato ISO e implementar una solución del lado del servidor. Tal vez con el tiempo, esto podría llevar a un mayor uso del formato de fecha estándar en cada localidad.

Cuestiones relacionadas