Отображение программной клавиатуры Android, когда в поле .focus () используется javascript - PullRequest
10 голосов
/ 16 мая 2011

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

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

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

Ответы [ 3 ]

5 голосов
/ 24 августа 2012

этот вопрос похож на Как сфокусировать поле ввода в браузере Android с помощью javascript или jquery

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

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

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

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

1 голос
/ 16 мая 2011

Я не уверен на 100%, но думаю, что это невозможно сделать (по крайней мере, до Android 2.2) из ​​javascript. Если вы используете телефонный разрыв, вы можете использовать это здесь: https://github.com/phonegap/phonegap/wiki/How-to-show-and-hide-soft-keyboard-in-Android

0 голосов
/ 23 мая 2017

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

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

if (event.target != target) {
    target.focus();
    target.click();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...