iPad nie pisze tekstu w <input>
Mam problem z<input>
pole podczas uruchamiania mojej aplikacji na iPadzie.
Na pulpicie kliknij pole tekstowe, wpisz tekst i kliknij przycisk, aby zatwierdzić dane wejściowe. Jednak na iPadzie otwiera się panel klawiatury po kliknięciu, ale tekst nie pojawia się w polu tekstowym podczas pisania.
Żeby było jeszcze dziwniej, mam<textarea>
w innej sekcji aplikacji i działa doskonale. Różnica polega na tym, że jeden siedzi na szczycie aplikacji, a drugi w importowanym html.
Struktura aplikacji wygląda następująco:
Na górze mam główną stronę HTML5, która importuje stronę HTML zawierającą 3 div. Każdy div z kolei importuje inne strony html. Strony te mają inną zawartość, w tym problematyczne pole wprowadzania. Coś takiego:
Main.html
-> container.html (imported via iframe)
-> div1 (imports page n-1 via load(url))
-> div2 (imports page n via load(url))
-> div3 (imports page n+1 via load(url))
pageN.html
-> contains the <input> field
Kod dla<textarea>
siedzenie na głównym html wygląda następująco:
<form id="formNotes">
<textarea id="mainTextbox" type="text" onKeyUp="RefreshNote()" onChange="RefreshNote()"></textarea>
</form>
I kod dla<input>
pole wewnątrz importowanej strony HTML wygląda następująco:
input{
-webkit-user-select: auto;
}
<form id="formInput">
<input id="text1" type="text" ontouchstart="OpenKeyboard(this)" onKeyDown="WriteText(this)" onKeyUp="WriteText(this)" onChange="WriteText(this)"></input>
</form>
Jedną z rzeczy, o których dowiedziałem się o używaniu zdarzeń na importowanych HTMLach, było użycie ontouchstart i innych do wywołania funkcji kliknięcia. Ale w tym przypadku mogę uruchomić iPada, aby otworzyć klawiaturę, więc nie wiem, dlaczego nie rozpoznaje kliknięcia klawiszy klawiatury lub dlaczego nie wysyła wartości do pola tekstowego.
[EDIT:] Dowiedziałem się, dlaczego nie otrzymuję napisanego tekstu, ponieważ iPad myśli<input>
pole nie istnieje (wyświetla się puste w alercie zamiast[object Object]
lub[object HTMLInputElement]
). Nie mam pojęcia dlaczego.
[EDIT 2:] Próbowałem użyćgetElementsByTagName
igetElementsByClassName
zamiastgetElementById
. Dzięki temu wydaje się rozpoznawać<input>
, ale wciąż nie mogę osiągnąć wartości.