| Autor | Zpráva | ||
|---|---|---|---|
| Karolíneček Profil * |
Může mi někdo poradit jak rozchodit toto na mobilu s Android 7 (chrome)???
<input onkeydown="var ch=window.event||e; if(ch.keyCode==8 && this.value==''){mojefunkce()};" ... >Nedokážu za žádnou cenu detekovat zmáčknutí zmíněné klávesy na virtuální klávesnici mobilu při psaní v <input>.... a následné odpálení mé JS funkce ... Na všem desktopech (PC prohlížečích) to jede ok. googlím celý den a je to marné, je to marné ... :-( Poradí někdo díky? mělo to být v code, omluva: <input onkeydown="var ch=window.event||e; if(ch.keyCode==8 && this.value==''){mojefunkce()};" ... > |
||
| Karolíneček Profil * |
#2 · Zasláno: 9. 1. 2019, 09:49:56
Toužím po sebevzdělání a tak můj dotaz rozšířím, všeobecně jaké Javascriptem odchytnutelné události vyvolává jednoduché stisknutí na androidí virtuální klávesnici v prostředí mé HTML stánky?
Běžné JS "klávesnicové" události (onkeyup, onkeydown apod) to asi nebudou? |
||
| blaaablaaa Profil |
#3 · Zasláno: 9. 1. 2019, 10:10:13
Karolíneček:
Takže onkeydown se vůbec nezavolá? Nebo vrátí jiný keycode (229)? |
||
| Karolíneček Profil * |
#4 · Zasláno: 9. 1. 2019, 10:35:33
blaaablaaa:
Tak jsem vyzkoušel "alertovat" a máš pravdu, hází to pořád 229, nechápu tedy přes jaké události přebírá můj HTML input v prostředí dotykových přístrojů hodnotu stisku té soft-klávesnice, když to není přes keyCode....? Jak jednoduše to JavaScriptem odchytit? <input onkeydown="var ch=window.event||e; alert(ch.keyCode);" type="text"> |
||
| blaaablaaa Profil |
#5 · Zasláno: 9. 1. 2019, 10:57:13
Karolíneček:
Je to kvůli bufferu (při keydown ještě nění jasné, co uživatel zmáčkl), co se stane, když to pověsíš na keyup? Resp. proč je potřeba odchytávat prázdná string po backspace? Nebylo by lepší to dát spíš na oninput, který zachytí změnu (tzn. i když uživatel text např. vyjme přes schránku apod.)? |
||
| Karolíneček Profil * |
#6 · Zasláno: 9. 1. 2019, 11:15:51
blaaablaaa:
Díky za tip, ale je to "blázinec", i onkeyup podává údaj '229'. Pokud to dobře chápu po události onkeyup už nic "nenásleduje", takže nechápu jak ten můj input pochopí správně zmačknutá písmena .... když pak javascript to neumí správně odchytit? Dokáže mne někdo vysvětlit jak to v dotykovém prostředí vlastně funguje oproti klasickým desktopovým prohlížečům, a má to jednoduché řešení? Testuju na Android 7, mob. Chrome posl. verze |
||
| blaaablaaa Profil |
#7 · Zasláno: 9. 1. 2019, 11:26:17
Karolíneček:
Bohužel je to vlastnost. Asi ani při onkeyup ještě nemusí být jasné, co se na vstup pošle (autocorrect apod.). Lze při keydown uložit obsah inputu a při keyup ho porovnat a zjistit tak rozdíl. Pořád ale nevím, jaké má být funkčnost toho skriptu, třeba to půjde vymyslet jinak/lépe. |
||
| Karolíneček Profil * |
#8 · Zasláno: 9. 1. 2019, 11:35:50
vymyslet (překopat) můj skript "jinak" to určitě půjde, ale můj "sen" je nyní pochopit a naučit se jak ty události v dotykovém prostředí vlastně fungují a co na pozadí předá inputu informaci o tom co má zobrazit, to přece musí jít javascriptem v androidu odychtit, vždyť je to naprosto banální požadavek ....
|
||
| blaaablaaa Profil |
#9 · Zasláno: 9. 1. 2019, 12:00:57
Karolíneček:
"229 on keyup and keydown indicates the keyboard buffer is busy. The reason - when you press a key - the input is still not guaranteed to be what the user pressed, because of auto suggest and other events that may follow immediately and invalidate the event. " |
||
| Karolíneček Profil * |
#10 · Zasláno: 9. 1. 2019, 12:23:23
blaaablaaa:
díky ale to jsem se nikam neposunul, zatím vím že při události keydown, keypress a keyup je u všech buffer "plný", a javascript hlásí furt 229 a neumím se dostat k tomu co umí přijmout tag input, ten vše chápe a zapisuje/zobrazuje ok .... Hlava mne to nebere jak donutit chytrý javascript aby byl stejně "chytrý" jako ten input :-))), když to napíšu laicky .... sorry nejsem odborník a jen se chci něčemu naučit ;-) a furt tuším že detekovat např. stisk "backspace" na mobilu musí nějak jít ...... |
||
| blaaablaaa Profil |
#11 · Zasláno: 9. 1. 2019, 12:42:04
Karolíneček:
Nejde. Jak jsem psal výše, je to vlastnost na androidím chrome. Dá se porovnat stav před a po stisknutí a zjistit tak vymazání znaku. |
||
| Keeehi Profil |
#12 · Zasláno: 9. 1. 2019, 17:57:12
Karolíneček:
Když by jsi chtěl detekovat změnu toho políčka tak bych použil onchange. |
||
| blaaablaaa Profil |
#13 · Zasláno: 10. 1. 2019, 12:55:29
Keeehi:
Spíš oninput, onchange se zavolá až po ztrátě focusu, ale pořád nevím, čeho se snaží docílit. |
||
|
Časová prodleva: 7 let
|
|||
0