2011-05-16 57 views
10

En una página web tengo un campo de búsqueda. He agregado un botón "borrar" para que los usuarios puedan borrar el campo de búsqueda y comenzar de nuevo. Para su comodidad, enfoco el cuadro de texto del campo de búsqueda y el cursor aparece en el cuadro. Sin embargo, el teclado virtual no aparece en los dispositivos Android que usan el navegador predeterminado. En iOS y Opera Mobile funciona como esperaba.Mostrando el teclado virtual de Android cuando un campo es .focus() 'd using javascript

¿Existe un método adicional al que pueda llamar que haga que el teclado se muestre en el navegador de Android para que el usuario pueda comenzar a escribir de inmediato?

function clear_search() { 
    if($('#searchinput').val()) { 
     $('#searchinput').val(''); 
    } 
    $('#searchinput').focus(); 
} 

Respuesta

6

esta pregunta es similar a How to focus an input field on Android browser through javascript or jquery

De todos modos, como ya tiene un evento de clic de trabajar, esto debería ayudará con estas cosas:

$(document).ready(function() { 
    $('#field').click(function(e){ $(this).focus(); }); 

    $('#button').click(function(e) { 
     $('#field').trigger('click'); 
    }); 
})  

Por supuesto que NECESITA un evento de clic que active esto. Simplemente enfocarse sin un evento no parece funcionar. Lo anterior funciona para mí en el navegador estándar en Android 4 y muestra el teclado virtual.

+0

Solo para observar, esto no parece funcionar con un evento de presionar la tecla (lo cual es extraño, porque me esperaría al enfocarme a un nuevo campo de texto usando, por ejemplo, la pestaña o tecla enter, que el teclado mostraría ya que estoy enfocado en un campo de texto ...) – Michael

+3

Esto también funciona con eventos touchstart + touchend. Muy ingenioso, ya que podría agregar un elemento en el inicio táctil y activar el enfoque en touchend. Solo recuerda usar event.stopPropagation(); y event.preventDefault(); de lo contrario, a veces el teclado comenzará a mostrarse y luego se ocultará nuevamente (dependiendo de lo que esté debajo del elemento que activa el evento). –

0

click() en sí mismo es insuficiente. Necesita focus() y luego click(). Tenga cuidado con los bucles infinitos si su script se activa mediante un onclick() en un elemento contenedor. El siguiente script me funciona en Chrome para Android 58 y Safari mobile 602.1.

var target = document.getElementsByTagName("input")[0]; 

if (event.target != target) { 
    target.focus(); 
    target.click(); 
} 
Cuestiones relacionadas