2012-04-17 11 views
63

Duplicar posibles:
HTML5 Type Detection and Plugin Initialization¿Cómo puedo saber si un navegador es compatible con <input type = 'fecha'>

<input type=date> 

debe crear una entrada con una (opcional) user-agent proporcionó datepicker, pero aún no es ampliamente compatible, por lo que estamos usando un jQuery UI Datepicker. ¿Cómo podemos permitir que los navegadores usen su propio selector de fecha y recurran a la interfaz de usuario jQuery solo si el navegador no tiene tal cosa?

En este momento, creo que solo Opera tiene un datepicker incorporado, pero una prueba para Opera obviamente sería mala. ¿Hay alguna manera de detectar esta característica (si puede en modo portátil)?

Gracias

+0

La detección del soporte de fechas se complica por el hecho de que los diferentes navegadores admiten fechas a diferentes niveles. Algunos ofrecen un buen calendario de citas. Otros solo validan que parece una fecha. – rjmunro

+1

Exactamente por qué hice la pregunta. Quería saber si el navegador tiene un marcador de fecha, no si pretende comprender las entradas de fecha. No es AFAICT un duplicado, y las respuestas a continuación no ayudan. Simplemente nunca llegué a actualizar o impugnar. Acabo de ir con '' y siempre uso jquery ui datepicker (la forma antigua). – DaedalusFall

+1

Debe tenerse en cuenta en los navegadores de escritorio la interfaz de usuario de entrada de fecha a menudo deja algo que desear. Incluso si lo admiten, es posible que no desee usarlo. Este problema no parece afectar a los navegadores móviles. –

Respuesta

101

El método cheques de fuelle si algún tipo de entrada es apoyada por la mayoría de los navegadores:

function checkInput(type) { 
    var input = document.createElement("input"); 
    input.setAttribute("type", type); 
    return input.type == type; 
} 

Pero, como simonox mencionado en los comentarios, algunos navegadores (como Android navegadores de acciones) pretenden que admiten algún tipo (como fecha), pero no ofrecen una interfaz de usuario para las entradas de fecha. Entonces, simonox mejoró la implementación usando el truco de establecer un valor ilegal en el campo de fecha. ¡Si el navegador desinfecta esta entrada, también podría ofrecer un selector de fecha!

function checkDateInput() { 
    var input = document.createElement('input'); 
    input.setAttribute('type','date'); 

    var notADateValue = 'not-a-date'; 
    input.setAttribute('value', notADateValue); 

    return (input.value !== notADateValue); 
} 
+8

No funciona en el navegador de stock de Android, devuelve true pero no tiene soporte para datepicker –

+30

Preguntar por el atributo de tipo no funciona en todos los navegadores de Android. Fingen que admiten inputType = date, pero no ofrecen una IU para las entradas de fecha. Esta detección de características que funcionó para mí: function() {var el = document.createElement ('input'), notADateValue = 'not-a-date'; el.setAttribute ('tipo', 'fecha'); el.setAttribute ('value', notADateValue); return! (El.value === notADateValue); } El truco consiste en establecer un valor ilegal en un campo de fecha. Si el navegador desinfecta esta entrada, también podría ofrecer un marcador de fecha. – simonox

+0

@simonox: una muy buena solución. Gracias por eso –

Cuestiones relacionadas