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.
Hoe kan ik dit zo maken dat het in alle browsers goed werkt? Ik gebruik overigens het event keypress:
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:
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.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(); } } |
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.