Et ekstra, unødvendigt skridt
Jeg har lavet en bestillingsformular på en webside med 14 input-felter og en enkelt textarea til løsagtige bemærkninger. Den fungerer efter hensigten, fint nok.I sådan en formular flytter man jo rundt med tabulatortasten, og det kan være lidt akavet. Det sidder ligesom i håndleddet, det højre, at bruge piletasterne.
Nå, den lille bekvemmelighed fik jeg så installeret med noget script. Højre-venstre bevægelser kræver lidt flere krummelurer end op-ned, for hvis der allerede er skrevet tekst i et felt, skulle man gerne kunne bruge piletasterne på normal vis til at rykke sidelæns inde i feltet, et bogstav ad gangen.
Det problem blev også løst. Tilbage står blot et mindre mysterium, som jeg ikke fatter noget som helst af: med pil til højre lander markøren ganske vist i det rigtige felt, ikke noget at klage over der, men altså lige efter det første bogstav. Jeg forventede, og det gør jeg stadig, men ikke længere med samme optimisme, at markøren ville finde sig til rette allerforrest i feltet, foran det første bogstav. Men, nej, det nægter den stædigt og konsekvent, uanset hvad jeg forsøger af krumspring. Den vil nu engang slå sig ned i læ mellem første og andet bogstav, lunt og trygt.
Strengt taget er det hamrende ligegyldigt og savner enhver praktisk betydning, om markøren lander før eller efter første bogstav. Men ... man er jo sådan indrettet, ligesom de fleste andre mennesker, at man gerne vil forstå, gerne vil vide hvorfor.
Til at tjekke, om markøren er nået til slutningen af teksten i den venstre celle bruger jeg denne funktion:
function vedSlut()
{
var indhold=document.selection.createRange();
var m=indhold.moveStart("character");
if (m==1)
{indhold.moveStart("character",-1);
return false;};
else
return true;
}
Og selve flytningen varetages af denne stump kode:
else if (tast==39 && vedSlut())
{feltNummer=felter.indexOf(fraFelt);
{if (feltNummer>3 && feltNummer<9)
{
tilFeltNummer=feltNummer + 6;
tilFelt=felter[tilFeltNummer];
document.getElementById(tilFelt).setActive();
};
};
};
Som det fremgår (for den opmærksomme læser) ligger felterne i et array, og de fem felter til højre har et indeks, som er 6 større end de fem til venstre.
Kan nogen gennemskue dette dunkle mysterium? Hvorfor rammer markøren netop mellem første og andet bogstav?
Formularen kan i øvrigt ses her: http://www.forlaganholt.dk/forlagform.shtml
PS, og til advarsel: mit script virker naturligvis ikke i Firefox; selve formularen gør, men ikke scriptet.