[JS] Input focus op mobiele devices

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • PaulEm
  • Registratie: Januari 2008
  • Laatst online: 03-02 07:52
Voor een formulier die ik aan het maken ben ik wil dat zodra een input ingevuld is met een teken hij door springt naar de volgende input. Dit werkt verder prima op desktop browsers en het lijkt ook te werken op mijn HTC Sensation, maar op iOS werkt dit dus weer niet.

Zodra focus() op het volgende element wordt aangeroepen gaat 't keyboard van iOS weg en komt er geen focus in het volgende veld. Ook een setTimeout werkt niet.

Het gekke is, ik focus op een veld dmv. keyup te binden. Dit werkt dus niet, maar wanneer ik een button aanmaak en een focus op een input doe dmv. click te binden komt het keyboard naar voren en is de input gefocust.

Heeft iemand hier ervaring mee, misschien toevallig het zelfde probleem gehad en wellicht een oplossing?


EDIT
Even een voorbeeldje gemaakt:
http://jsfiddle.net/GKCAE/3/

[ Voor 4% gewijzigd door PaulEm op 08-03-2012 12:51 ]


Acties:
  • 0 Henk 'm!

  • Rekcor
  • Registratie: Februari 2005
  • Laatst online: 05-09 21:08

Acties:
  • 0 Henk 'm!

  • PaulEm
  • Registratie: Januari 2008
  • Laatst online: 03-02 07:52
Click events werken inderdaad, zoals ik zelf ook al aangaf. Echter vanaf een keydown/keyup werkt dit niet en daar zoek ik nou juist een oplossing voor ;)

Edit:
Inmiddels opgelost door een input buiten het scherm te plaatsen en mijn huidige inputs te vervangen met een DIV. Als ik via de DIV een onclick event bind en dan focus op de input werkt het, dus los ik 't op die manier op ;)

[ Voor 24% gewijzigd door PaulEm op 08-03-2012 16:48 ]


Acties:
  • 0 Henk 'm!

  • Zoefff
  • Registratie: September 2001
  • Laatst online: 13:38

Zoefff

❤ 

Het gebruik van keyUp is sowieso discutabel. Er zijn voldoende invoermethoden te bedenken waarbij het event niet of niet juist wordt afgevuurd en de cursor niet naar het volgende veld gaat. Bijvoorbeeld bij het plakken van content, zowel via het toetsenbord (ctrl + v) als muis (context menu) als applicatie menu. Nog los van het feit dat je op die manier meer dan 1 karakter in het veld kan krijgen ;)

Een oplossing met het "change" event vangt alle invoer netjes af, maar wordt vervolgens pas aangeroepen als de focus veranderd. Dat is dus ook niet bruikbaar. Het enige wat ik zo snel dan nog kan bedenken is het periodiek (b.v. iedere 0.1 sec) checken wat de inhoud van het veld is. Of een combinatie van mouseUp en keyUp met controle van de inhoud?


FotoblogWerkaandemuur.nlMoestuincursus.nlTwitter


Acties:
  • 0 Henk 'm!

  • R4gnax
  • Registratie: Maart 2009
  • Laatst online: 06-09 17:51
Zoefff schreef op maandag 12 maart 2012 @ 14:53:
Het enige wat ik zo snel dan nog kan bedenken is het periodiek (b.v. iedere 0.1 sec) checken wat de inhoud van het veld is. Of een combinatie van mouseUp en keyUp met controle van de inhoud?
Of gewoon het HTML5 input event gebruiken. Het input event is eigenlijk wel op alle relevante devices ondersteund en op alle moderne destop browsers. Alleen voor IE6-8 zul je een polyfill op basis van polling o.i.d. nodig hebben.

Zie o.a. http://blog.danielfriesen...ser-maze-oninput-support/