Próbuję znaleźć optymalny sposób na umożliwienie wprowadzania znaków za pomocą klawiatury telefonu. Nie chodzi o standardowe pole tekstowe, tylko o to, żeby pojawiła się klawiatura wbudowana w telefon i każdy naciśnięty znak, czy to standardowy, czy ąćęłńóśźż, czy inny dostępny dla użytkownika, wyzwalał funkcję JavaScript, której parametrem jest wpisywany znak.
Użytkownik klika określone miejsce na ekranie aplikacji, pojawia się klawiaturka, z której może korzystać, a jak użytkownik kliknie poza tym polem, to klawiatura znika.
Generalnie, to udało mi się to zrealizować w kilku wariantach różniących się tylko rodzajem pola z klawiaturą: https://andrzejlisek.github.io/KlawiaturaTelefon.html
Jak widać (cały kod aplikacji jest dostępny poprzez standardowy widok źródła), użyte są odpowiednio pole tekstowe, pole do hasła i textarea w tej samej roli. Wszystkie trzy warianty działają prawie dobrze, ale jest kilka problemów:
- W polu testowym i textarea, ja się pisze na telefonie, to wpisuję słowo i jak nacisnę spację, to wpisuje się to samo słowo jeszcze raz, co nie jest zamierzone. Jak wpisze kawałek słowa i telefon podpowie słowo, które zaakceptuję, to funkcja nie dostaje sygnału wymazania wprowadzonych znaków i wpisuje wybrane słowo. Np. zacznę wpisywać "Kom", telefon podpowie "Komputer", to będzie wpisane KomKomputer, a po pierwszych trzech literach nie mam informacji, ze one nie są aktualne.
- Pole z hasłem wydaje się działać najlepiej w tej roli nie wprowadza dodatkowych i niezamierzonych znaków, można kontrolować wielkość liter.
Jak to dobrze zrobić, żeby działał i słownik i dobrze wchodziły słowa. Jak telefon sam chce podpowiedzieć słowo to jak w JavaScript odebrać informację, że dopiero co wpisane znaki są nieaktualne i wtedy hipotetycznie telefon odebrałby "Kom[backspace][backspace][backspace]Komputer"?
Czy może lepiej jeszcze inaczej zrobić ideę, żeby uzyskać klawiaturę wbudowaną w telefon i za jej pomocą wysterować działaniem aplikacji zamiast tworzyć zwykłego pola tekstowego?