2011-08-30 13 views
7

Casi no tengo conocimiento de programación web, pero me han encargado resolver algo en el sitio web de mi empresa. Aparentemente, tengo un problema con los navegadores que usan HTML5 en un sitio heredado usando type = "date" y necesito encontrar una forma de evitarlo.Tipo de entrada de Google Chrome = "fecha"

Mi sitio tiene una gran cantidad de campos de fecha que el usuario debe introducir como tales:

<input type="date" name="DateStart" size="15" value="8/30/2011"> 

En todos los navegadores que utilizamos actualmente, excepto Chrome, esto funciona muy bien. Chrome es el único navegador que proporciona botones para desplazarse por la fecha. Lo que veo en la parte final de esto es un intento de hacer esto:

FormatDateTime(DateStart, 2) 

me sale un error de fecha no válido lo que significa que no podemos utilizar Chrome para llenar este formulario. ¿Hay alguna forma de solucionar este problema?

Respuesta

7

Chrome no tiene problemas con las entradas de fecha, you are using the wrong date-format, señor. Chrome no es el único navegador hasta hoy que tiene soporte para las nuevas entradas HTML5. Opera, por ejemplo, muestra un menú desplegable con un calendario en las entradas con type="date".

También el atributo de tamaño no existe en HTML5-date-inputs.

+0

Está bien, lo siento redactado de esa manera.Como dije, casi no tengo conocimiento del desarrollador web. Este sitio tiene aproximadamente 10 años o más y la compañía no tiene presupuesto para reemplazarlo, así que me han encargado mantenerlo actualizado. ¿Hay alguna manera de evitar que Chrome use HTML5 en esta instancia específica y volver a la forma en que solía funcionar? Funcionó bien hasta la versión 9 más o menos. –

+2

He reparado mi redacción original para ser menos ofensivo. –

+4

El problema aquí es que su sitio/usó un tipo de entrada de "fecha" mucho antes de que se incluyera en cualquier borrador de normas. Si puedes simplemente cambiar el tipo a "texto", esa sería la solución más simple. – feeela

28

En realidad el soporte de chrome para 'fecha' es roto. (See here). Al menos por el momento.

El uso de 'fecha' en el HTML es absolutamente correcto: se supone que los navegadores que no conocen o no admiten un tipo de entrada recurren a tipo = 'texto'.

Actualmente Chrome soporta parcialmente fecha, de una manera que es esencialmente rota (que añade un par de botones de arriba-abajo, pero sin selector de fechas.)

Por supuesto que hay que tener en cuenta que si son utilizando type = 'date', and if the browser supports it, entonces querrá deshabilitar el soporte datepicker que de lo contrario estaría usando.

ACTUALIZACIÓN (6 feb 2012):

A mi me parece como esto ha sido arreglado. Chrome ya no afirma que admite el tipo de entrada = 'fecha', y no proporciona la implementación parcialmente completa.

ACTUALIZACIÓN (17 ago 2012):

Chrome hace ahora tienen input type="date" support, y es más funcional en esta ocasión.

+0

De hecho [la especificación WHATWG] (http://www.whatwg.org/specs/web-apps/current-work/multipage/states-of-the-type-attribute.html#date-state- (type = date)) no menciona cómo debería ser la interfaz de usuario, solo que debe haber algún "control" para insertar o modificar la fecha. Esto suele ser un marcador de fecha, pero a partir de la especificación no tiene por qué ser. Entonces "roto" depende del punto de vista. He visto personas que usan la entrada de fecha original de Chrome con una rueda de desplazamiento del mouse (que funciona, desplácese hacia arriba sobre la entrada para aumentar la fecha). Sé que es una implementación deficiente, pero no está rota, ya que de alguna manera es utilizable. – feeela

+0

@feeela La implementación actual es mucho más funcional que antes. La implementación anterior era básicamente inutilizable, como lo demuestra el hecho de que el equipo más tarde decidió eliminarlo. –

+8

@Tom Christie: +1 para mantener su respuesta actualizada! –

4

El campo de valor para el tipo de entrada = entrada debe tener el formato aaaa-MM-dd. Check the W3 standards on this.

Esto significa que debe hacer algo como DateTime.Now.ToString ("aaaa-MM-dd"). en su código, sugeriría un HtmlHelper personalizado.

El formato de la fecha en el navegador depende completamente de la configuración de su sistema.

0

usuario de este formato de fecha: date("Y-m-d");

Cuestiones relacionadas