Отображение мягкой клавиатуры Android, когда поле является .focus() 'd, используя javascript

На веб-странице у меня есть поле поиска. Я добавил кнопку "clear", чтобы пользователи могли очистить поле поиска и начать заново. В качестве удобства я фокусирую текстовое поле поля поиска, и курсор появляется в поле. Однако, мягкая клавиатура, похоже, не появляется на устройствах Android, которые используют браузер по умолчанию. В iOS и Opera Mobile он работает так, как я ожидал.

Есть ли дополнительный метод, который я могу вызвать, который заставит клавиатуру отобразиться в браузере Android, чтобы пользователь сразу начал набирать текст?

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

Ответ 2

этот вопрос аналогичен Как сфокусировать поле ввода в браузере Android через javascript или jquery

В любом случае, поскольку у вас уже есть событие click для работы, это должно сортировать вас:

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

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

Конечно, вам нужно событие щелчка, запускающее это. Просто фокусировка без события не работает. Вышеупомянутое работает для меня в стандартном браузере на Android 4 и показывает мягкую клавиатуру.

Ответ 3

click() сам по себе недостаточно. Вам нужно focus(), затем click(). Остерегайтесь бесконечных циклов, если ваш script запускается с помощью onclick() в содержащем элементе. script ниже работает для меня в Chrome для Android and 58 и Safari mobile 602.1.

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

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