2011-04-15 22 views
5

¿Es posible controlar la pantalla, es decir, (mostrar/ocultar) del teclado en iPad Safari a través del código?¿Puedes mostrar/ocultar el teclado del iPad Safari usando JavaScript?

Tengo 2 campos de formulario; 1. Cuadro de texto (por ejemplo Nombre) 2. Seleccione la lista/desplegable (Say Estado)

Mi pregunta es cuando el usuario mueve el foco de Nombre de Estado, el teclado sigue siendo there..Why es así y cómo puede ¿Oculto el teclado cuando el foco se mueve a la lista desplegable?

Gracias.

+0

Su pregunta no debe preguntar sobre mostrar el teclado cuando solo está interesado en ocultarlo. – Michael

Respuesta

2

Acabo de toparme con un problema muy similar, no estoy seguro si mi solución funcionará para usted.

En mi caso, tengo una entrada de texto dentro de un formulario. En el envío, estoy usando e.preventDefault() para evitar que la página se navegue. Creo que esto también estaba teniendo el efecto de detener la acción predeterminada de ocultar el teclado.

Para resolver esto, agregué un input.blur() explícito cuando se envía el formulario. Esto pareció ser suficiente para que safari elimine el teclado.

Espero que esto ayude!

+0

Thx ... seguramente probaré este método ... – testndtv

+0

Estoy teniendo el problema opuesto, es decir. el teclado se va cuando todavía hay un elemento de texto. Ya estoy usando PreventionDefault y el teclado todavía está desapareciendo. – Michael

1

Tuve el mismo problema. Tenía un formulario en el que el teclado debía colapsar cuando escribía fuera del campo (no era el comportamiento nativo en el ipad) y cuando el campo de selección de foco. La única solución para mí fue la creación de la entrada oculta

<input type="hidden" id="blurInput" /> 

y manejo en JavaScript código de evento de foco:

$element = $(event.target); 
if($element.is('select')) { 
    $('#blurInput').blur(); 
    $element.focus(); 
} 

En caso de que quiera sólo para difuminar campo de entrada de otra solución funciona perfecto, pero entre la entrada y seleccionarlo falla

document.activeElement.blur(); 
$('input').blur(); 
+0

+1 para 'document.activeElement.blur();' –

Cuestiones relacionadas