Affichage du clavier programmable d'Android lorsqu'un champ est .focus () 'en utilisant javascript

Dans une page Web, j'ai un champ de recherche. J'ai ajouté un bouton «clair» pour que les utilisateurs puissent effacer le champ de recherche et recommencer. À titre de commodité, je focalise la zone de texte du champ de recherche et le curseur apparaît dans la boîte. Cependant, le clavier doux ne semble pas apparaître sur les périphériques Android qui utilisent le navigateur par défaut. Dans iOS et Opera Mobile, cela fonctionne comme je m'attends.

Existe-t-il une méthode supplémentaire que je peux appeler qui fera apparaître le clavier sur le navigateur Android afin que l'utilisateur puisse commencer à taper tout de suite?

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

Je ne suis pas sûr à 100%, mais je pense qu'il ne peut pas être fait (au moins jusqu'à Android 2.2) à partir de javascript. Si vous utilisez phonegap, vous pouvez l'utiliser ici: https://github.com/phonegap/phonegap/wiki/How-to-show-and-hide-soft-keyboard-in-Android

Cette question est semblable à la façon de concentrer un champ de saisie sur un navigateur Android via javascript ou jquery

Quoi qu'il en soit, comme vous avez déjà un événement de clic pour travailler, cela devrait vous résoudre:

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

Bien sûr, vous avez besoin d'un événement de clic déclenchant cela. Le fait de se concentrer sans événement ne semble pas fonctionner. Ce qui précède fonctionne sur le navigateur standard sur Android 4 et affiche le clavier doux.

click() seul ne suffit pas . Vous devez vous focus() puis click() . Méfiez-vous des boucles infinies si votre script est déclenché par un onclick () sur un élément contenant. Le script ci-dessous fonctionne pour moi sur Chrome pour Android 58 et Safari mobile 602.1.

 var target = document.getElementsByTagName("input")[0]; if (event.target != target) { target.focus(); target.click(); }