Отображение мягкой клавиатуры Android, когда поле является .focus() 'd, используя javascript
На веб-странице у меня есть поле поиска. Я добавил кнопку "clear", чтобы пользователи могли очистить поле поиска и начать заново. В качестве удобства я фокусирую текстовое поле поля поиска, и курсор появляется в поле. Однако, мягкая клавиатура, похоже, не появляется на устройствах Android, которые используют браузер по умолчанию. В iOS и Opera Mobile он работает так, как я ожидал.
Есть ли дополнительный метод, который я могу вызвать, который заставит клавиатуру отобразиться в браузере Android, чтобы пользователь сразу начал набирать текст?
function clear_search() {
if($('#searchinput').val()) {
$('#searchinput').val('');
}
$('#searchinput').focus();
}
Ответы
Ответ 1
Я не уверен на 100%, но я думаю, что это не может быть сделано (по крайней мере, до android 2.2) из javascript. Если вы используете phonegap, вы можете использовать это здесь: https://github.com/phonegap/phonegap/wiki/How-to-show-and-hide-soft-keyboard-in-Android
Ответ 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();
}