2013-03-17 2 views
9

У меня есть некоторые пользовательские веб-компоненты в моем мобильном веб-приложении, тогда как мне нужно вручную запускать события «фокуса» на поле, чтобы имитировать функциональность «СЛЕДУЮЩИЕ» в функции мягкой клавиатуры Android. (используя собственный браузер Galaxy S3).Могу ли я запускать мягкую клавиатуру Android для открытия через javascript (без телефонного разговора)?

Однако, когда я вручную запускаю событие фокусировки в поле «выбрать», родная мягкая клавиатура не отображается. Затем я должен нажать на поле, чтобы показать его. (В IOS, конечно, все работает отлично).

Так что мне интересно, если событие «focus» не запускает открытую мягкую клавиатуру, какое событие JS будет ???

Я не пользуюсь телефонной связью, поэтому я надеюсь, что без нее есть способ.

Спасибо за любую помощь !!!

ответ

18

Вот ссылка из StackOverflow:

Showing Android's soft keyboard when a field is .focus()'d using javascript

Просто фокусирование без события не кажется, работает. - вам нужно событие , инициирующее это событие.

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

спасибо. Я использую чистый javascript вместо jquery, но концепция работала :) – 29er

+0

Возможно ли показать клавиатуру без реального нажатия? Я попытался скрыть кнопку и щелкнуть программно, но также не имел успеха: http://jsfiddle.net/alex_myronov/e5JcP/8/ Также пробовал без кнопок, вызывая щелчок по вводу ... –

+0

@ alex.mironov: check это из. http://stackoverflow.com/questions/6837543/show-virtual-keyboard-on-mobile-phones-in-javascript – oak

2

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

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

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