2012-03-16 17 views
16

Estoy tratando de crear un componente de fecha de entrada HTML5 para que pueda aprovechar el selector de fecha/hora nativo de iOS y estoy usando jquery. Tengo el siguiente código para generar el componente:Cómo registrarse para eventos de cambio de valor en <input type = date> en iOS

var $inputDate = $("<input></input>"); 
    $inputDate.attr("type", "date"); 
    $inputDate.attr("value", "2004-05-03"); 
    $inputDate.change(function(event) 
    { 
    console.log("value changed"); 
    }); 

El código se ejecuta dentro de un componente WebKit en una aplicación nativa. El control de entrada parece estar bien y puedo cambiar el valor usando el selector. Sin embargo, la función de cambio no se activa cuando cambio el valor y descarto el selector. Cuando ejecuto esto en una página web en Chrome, las cosas funcionan como se esperaba. ¿Cómo hago esto para iOS?

+0

Otros usuarios que se quejaron de que el evento de cambio no se activó, se sugirieron que utilizaran algo así como el siguiente kit: http://cubiq.org/spinning-wheel-on-webkit-for-iphone-ipod-touch –

+0

Gracias por la sugerencia, pero el uso de ese kit no da soporte regional que nuestro producto requiere. –

Respuesta

23

La función onblur se invoca cuando se cierra el selector de fecha/hora. Por lo que este funciona:

var $inputDate = $("<input></input>"); 
$inputDate.attr("type", "date"); 
$inputDate.attr("value", "2004-05-03"); 
$inputDate.blur(function(event) 
{ 
    console.log("value changed"); 
}); 

En las nuevas versiones de Chrome (y Chrome en Android):

  • el evento onchange se invoca cuando se elige la fecha
  • caso onBlur no se invoca cuando el menú desplegable es despedido, sólo una vez el control pierde el foco del teclado

Este es un ejemplo que muestra qué evento se genera utilizando JavaScript sencillo: http://jsbin.com/iximuy/4

+0

¡Hombre, me estaba arrancando el pelo por esto, gracias por salvarme! – kand

Cuestiones relacionadas