2009-06-11 12 views

Respuesta

3

Nota: esta respuesta es vieja y puede no ser relevante para las versiones más recientes por ahí ...


No es de ayuda para usted, pero el último póster en this hilo escribió que su un error del webkit motor.
no puedo decir si es un error o no verificado ...

Último post de way back machine (como original parece no funcionar):

estoy desarrollando mi aplicación en el más puro XHTML MP/Ecmascript MP/WCSS. Por lo tanto, usando una API nativa de control de plataforma no es realmente una opción para . Sí, el comportamiento que mencionas es el mismo que el mío. Busqué en su tema en la bugzilla en webkit.org y encontré que este es un error reportado . focus() a un cuadro de texto resalta el elemento pero no proporciona un quilate para que el usuario comience a ingresar texto. Usar un temporizador como lo menciona "[email protected]" tampoco ayuda.

Este comportamiento es común en todas las plataformas (s60, iphone, android) que usan el motor de webkit .

Así que a partir de ahora no veo una solución a este problema.

Esperanza esto ayuda

+0

El enlace ya no funciona, y la respuesta no proporciona ninguna información de utilidad. – eMarine

18

Sólo se mostrará el teclado si usted enciende el foco de un evento de clic, a fin de poner un botón en la página con un onclick que hace el foco y se mostrará el teclado. Completamente inútil a excepción de la validación (al hacer clic en enviar el código de validación se enfoca en un elemento no válido)

+0

confirmado. "clic" funciona. Por algún motivo, los eventos de gestos no funcionan ... – RickDT

+0

¿A qué te refieres? código como este? 'button.click = function() { button.focus(); }; document.body.onload = function() { button.click(); }; 'pero no funciona. – CoderLim

2

Tengo un problema similar, solo mi problema es que el enfoque no ocurrirá en un evento 'touchend'.

http://jsfiddle.net/milosdakic/FNVm5/

El siguiente código funciona en Chrome/Safari, etc, pero fallará en Mobile Safari. La única forma de hacer que funcione es hacer que el evento sea 'clic', pero dado que el código está hecho para un dispositivo iOS, sería beneficioso que funcione con eventos táctiles.

Parece ser un error con el motor Webkit.

-4

Esta es una workround:

setTimeout(function(){ 
    input.focus(); 
},500);//milliseconds 
+3

No pude conseguir esta solución para trabajar en un iPad 2 con iOS 6.0.1. –

+0

Esto no puede funcionar con respecto a una política de seguridad de Apple. –

5

Editar: La siguiente ya no funciona en iOS - UIWebView hizo permitir enlaces de enfoque automático y la pantalla de inicio que se utilizan para el enfoque automático pero discapacitados que hace muchas versiones.

El autofocus (ver más abajo) Propiedad no funciona desde una URL en Mobile Safari, pero no funciona si usted es:

  1. utilizando un UIWebView
  2. usando un enlace de pantalla de inicio

El tamaño de fuente de la entrada debe ser lo suficientemente grande para evitar el zoom iOS10 al tocar dos veces (ahora esa ventana siempre es ampliable) y diseñar la página para que se ajuste a la pantalla (de lo contrario, al cargar la página se vuelve extraño errores de tiempo/raza en el zoom, o si el desplazamiento capaz el campo a veces no se centra a la pantalla correctamente).

autofocus: La especificación de HTML5 para hacer esto es autofocus property of the input tag. Pero iOS ignora eso, presumiblemente para una interfaz de usuario más limpia que no aparece en el teclado táctil al navegar a una página. Here es una página que muestra la propiedad de enfoque automático. Antes de HTML5 llamaría a element.focus() en el evento window.onload. Sin embargo, las llamadas a focus() no son compatibles con iOS, excepto durante el manejo de un evento onclick.

+1

Su respuesta tiene un poco de eufemismo. WkWebView no hace autofocus en el campo de entrada (está conectado por razones de seguridad). –

0

Un poco tarde quizás pero para una persona futura tal vez. En nuestra aplicación web que se ejecuta en iOS iPad (6 y más reciente), lo hacemos con un intervalo establecido:

startFocusOnTextField: function() { 
     this.intervalIDForTextFieldFocus = window.setInterval(function() { 
      document.getElementById(page.textInputFieldObj.id).focus(); 
     }, 150); 
    }, 

cual se le llama en la página de carga (entorno móvil jQuery)

+1

La entrada del formulario recibe el foco (se aplican estilos css), pero el teclado no se abre. – guiniveretoo

0

Si está configurando el foco con desde un evento de clic, debe evitar Predeterminado; de lo contrario, la acción predeterminada de los eventos de clic establecerá el foco en el elemento seleccionado.

Cuestiones relacionadas