Fortis PC banking is een dienst die ik regelmatig gebruik. Je krijgt een formulier, een overschrijvingsformulier, gepresenteerd waarin je het bedrag kan invullen, de persoon aan wie je dat bedrag wilt schenken, enz… Eenvoudig en doeltreffend. Niet langer naar de bank snellen om alle die overschrijvingen door te geven. Handig.
Even naar de code kijken kan geen kwaad wanneer je geconfronteerd wordt met eigenaardig gedrag van een formulier. s:-)
Tab, volgend veld, tab, volgend veld, tab ?
Het formulier heb ik beschikbaar gemaakt zodat je even kan testen. Schakel JavaScript uit en ga naar het datumveld en volg de velden door met de tab toets te navigeren.
Als je dit even probeert, merk je dat de lay-out van het formulier overeenkomt met de papieren versie. De verschillende adres velden doorkruisen echter de keuzemogelijkheden van de mededeling(Netscape 7, Mac / IE 6, Win2000). IE5.0 voor Mac blijkt wel te werken, zonder JavaScript. Met JavaScript wordt niets weergegeven. Dus daar geraak je ook niet verder.
Wat gebeurt er?
De opeenvolging van de velden volgt de opbouw van het formulier niet meer.
Dit is eenvoudig op te lossen door het TABINDEX atribuut toe te voegen aan de velden in het formulier.
Niet alle browsers ondersteunen dit attribuut op dezelfde manier maar je moet niet langer gebruik maken van complexe JavaScript functies. JavaScript kan je uitzetten en het onderhouden van de functies is vrij intensief.
TABINDEX manipuleert de volgorde van de velden zodat je niet beperkt bent tot het linearizeren van je HTML code. Wanneer je gebruik maakt van lay-out TABLE elementen kan dit van pas komen. Table elementen hebben de eigenschap gegevens in een specifieke volgorde te specifiëren. Het gevolg is dat JAWS of andere scherm-lezers problemen ondervinden met het reconstrueren van de structuur. Dus niet alleen de gewone gebruiker heeft een probleem met dit formulier, ook de blinde surfer kan hier over struikelen.
Ik heb een aangepaste versie gemaakt die je kan testen. Ook het LABEL element moet je gebruiken (JAWS !) maar dat is voor een andere keer