[js] Lengte van inputveld na key event

Pagina: 1
Acties:

  • cyberstalker
  • Registratie: September 2005
  • Niet online

cyberstalker

Eersteklas beunhaas

Topicstarter
Ik heb een functietje geschreven dat automatisch naar het volgende inputveld gaat wanneer het maximum aantal karakters is ingevuld.

Nu is het probleem dat het de waarde in Fx niet wordt bijgewerkt tot nadat de functie klaar is, terwijl de waarde in Opera direct wordt geupdate.

JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
function auto_focus(event)
{
        var link        =       event.target;
        var inputvalue  =       link.value;
        var next_node   =       nextNode(link);

        if (inputvalue.length + 1 < link.getAttribute('maxlength'))
        {
                return false;
        }

        while (next_node.nodeName != link.nodeName && next_node != null)
        {
                next_node       =       nextNode(next_node);
        }

        if (next_node != null)
        {
                next_node.focus();
        }
}
Dit werkt zo in Firefox, omdat ik nu zelf 1 optel bij inputvalue.length. In opera kun je nu echter een karakter te weinig invullen.

Hoe kan ik dit zo maken dat het in alle browsers goed werkt? Ik gebruik overigens het event keypress:

JavaScript:
1
2
3
4
5
6
7
for (i = 0; i < inputs.length; i++)
{
        if (inputs[i].hasAttribute('maxlength'))
        {
                inputs[i].addEventListener('keypress', auto_focus, false);
        }
}

Ik ontken het bestaan van IE.


  • André
  • Registratie: Maart 2002
  • Laatst online: 27-11 10:04

André

Analytics dude

Volgens mij gaat het in ieder geval niet werken in IE omdat die event.srcElement gebruikt ipv event.target.

En ipv keypress zou je onkeydown kunnen gebruiken?

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 12:12

crisp

Devver

Pixelated

Eerder onkeyup, en ik zou in de eventhandler gewoon met het 'this' keyword werken.

btw: IE ondersteund DOM level 2 events ook niet...

Intentionally left blank


  • cyberstalker
  • Registratie: September 2005
  • Niet online

cyberstalker

Eersteklas beunhaas

Topicstarter
André schreef op woensdag 07 maart 2007 @ 22:37:
Volgens mij gaat het in ieder geval niet werken in IE omdat die event.srcElement gebruikt ipv event.target.

En ipv keypress zou je onkeydown kunnen gebruiken?
IE is geen factor. Ik schrijf sowieso XHTML, wat toch al niet in IE werkt. Om vervolgens ondersteuning voor IE's jscript in te bouwen is dan redelijk nutteloos ;) .
crisp schreef op woensdag 07 maart 2007 @ 22:53:
Eerder onkeyup, en ik zou in de eventhandler gewoon met het 'this' keyword werken.

btw: IE ondersteund DOM level 2 events ook niet...
Ik heb het nu werken met het event 'keyup', wat in de meeste browsers lijkt te werken :) .

Kun jij me uitleggen waarom ik het 'this' keyword zou moeten gebruiken? Is dat duidelijker? Logischer? Sneller?

Ik ontken het bestaan van IE.