2013-03-17 17 views
9

Mam pewne niestandardowe składniki internetowe w mojej mobilnej aplikacji internetowej, natomiast muszę ręcznie uruchamiać zdarzenia "skupienia" na polu, aby zasymulować funkcjonalność "NASTĘPNYM" w funkcji klawiatury programowej Android. (używając rodzimej przeglądarki Galaxy S3).Czy mogę uruchomić klawiaturę programowalną z Androidem, aby otworzyć javascript (bez phonegapa)?

Jednak, gdy ręcznie uruchamiam fokus w polu "Wybierz", natywna klawiatura programowa nie jest wyświetlana. Muszę następnie kliknąć pole, aby je wyświetlić. (W IOS, oczywiście, działa dobrze).

Zastanawiam się, czy zdarzenie "focus" nie uruchamia miękkiej klawiatury do otwarcia, jakie zdarzenie JS będzie?

Nie używam Fonegapa, więc mam nadzieję, że bez niego istnieje sposób.

Dzięki za pomoc!

Odpowiedz

18

Oto link z StackOverflow:

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

Tylko skupienie bez zdarzenia robi wydaje się działać. - potrzebujesz zdarzenia wywołującego kliknięcie .

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

Dziękuję. Im przy użyciu czystego javascript zamiast jquery, ale koncepcja działała :) – 29er

+0

Czy to możliwe, aby pokazać klawiaturę bez prawdziwego kliknięcia? Próbowałem ukryć przycisk i kliknąłem programowo, ale też nie odniosłem sukcesu: http://jsfiddle.net/alex_myronov/e5JcP/8/ Próbowałem również bez przycisków, uruchamiając kliknięcie wejścia ... –

+0

@ alex.mironov: sprawdź to na zewnątrz. http://stackoverflow.com/questions/6837543/show-virtual-keyboard-on-mobile-phones-in-javascript – oak

2

Można to zrobić dzwoniąc focus() następnie click() na wejściu. Nie potrzeba jquery. Uważaj na nieskończone pętle, jeśli skrypt zostanie wywołany przez onclick() na elemencie zawierającym. Upewnij się również, że ten skrypt jest wywoływany przez niektóre interakcje użytkownika. Nie będzie działać z document.onload() ani z setTimeout(). Jest także kruchy z powodu jednoczesnych zmian stylu w elementach. Poniższy skrypt działa dla mnie w Chrome na Androida 58 i Safari na komórki 602.1.

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

if (event.target != target) { 
    target.focus(); 
    target.click(); 
} 
Powiązane problemy