Avatar billede bodyguard Nybegynder
25. februar 2009 - 03:17 Der er 4 kommentarer og
1 løsning

Auto tab til næste feldt

Hej Eksperter,

Jeg har dette script:

if (this.value.length == 2) document.getElementById('besked').focus();

Det virker umiddelbart efter hensigten, der er bare det problem at man ikke kan "back-tabbe" ...


Nogen der kan hjælpe mig med et alternativ?
Avatar billede fennec Nybegynder
25. februar 2009 - 08:10 #1
Du kunne gøre noget i denne stil:

<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript">
<!--
function tab(fEle, fLen, fNext)
{
    if(fEle.value.length == fLen)
        fNext.focus()
}
//-->
</SCRIPT>

<form name="myForm" method="Post" action="">
<input type="Text" name="test1" value="" onkeyup="tab(this, 2, this.form.test2)" onkeypress="tab(this, 2, this.form.test2)"><br>
<input type="Text" name="test2" value="" onkeyup="tab(this, 2, this.form.test3)" onkeypress="tab(this, 2, this.form.test3)"><br>
<input type="Text" name="test3" value="" onkeyup="tab(this, 2, this.form.test4)" onkeypress="tab(this, 2, this.form.test4)"><br>
<input type="Text" name="test4" value="" onkeyup="tab(this, 2, this.form.knap1)" onkeypress="tab(this, 2, this.form.knap1)"><br>
<input type="Button" name="knap1" value="klik" onClick="return false;">
</form>
Avatar billede bodyguard Nybegynder
25. februar 2009 - 22:22 #2
Fint input, men man kan stadig ikke bruge shift+tab ...
Avatar billede fennec Nybegynder
26. februar 2009 - 09:35 #3
ok... Weard. Det virker i mit udviklings værktøj, men ikke i FF og IE :(

Jeg har lavet lidt test, og kan ikke komme frem til en god løsning, der virker cross browser. Det skyldes at i FF bliver onkeypress affyret før onkeydown. I IE er det omvendt.

Det skaber også en masse problemer hvis man holder en knap nede heletiden (onkeypress), da men i FF så ikke får værdien af keycoden (få bare 0 ud).

Jeg kan ikke komme vidre med dette problem, men du får lige den kode jeg har nu. Du kan måske arbejde vidre på det:
<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript">
<!--
function tab(fEle, fLen, fNext, fEvent)
{
    if(fEvent.keyCode >= 48)
        if(fEle.value.length >= fLen)
            fNext.focus()
}

//-->
</SCRIPT>

<form name="myForm" method="Post" action="">
<input type="Text" name="test1" value="" onkeypress="tab(this, 2, this.form.test2, event)" onkeydown="tab(this, 2, this.form.test2, event)" onkeyup="tab(this, 2, this.form.test2, event)"><br>
<input type="Text" name="test2" value="" onkeypress="tab(this, 2, this.form.test3, event)" onkeydown="tab(this, 2, this.form.test3, event)" onkeyup="tab(this, 2, this.form.test3, event)"><br>
<input type="Text" name="test3" value="" onkeypress="tab(this, 2, this.form.test4, event)" onkeydown="tab(this, 2, this.form.test4, event)" onkeyup="tab(this, 2, this.form.test4, event)"><br>
<input type="Text" name="test4" value="" onkeypress="tab(this, 2, this.form.knap1, event)" onkeydown="tab(this, 2, this.form.knap1, event)" onkeyup="tab(this, 2, this.form.knap1, event)"><br>
<input type="Button" name="knap1" value="klik" onClick="return false;"><br>
<input type="Text" name="test5" value="" onkeydown="alert(event.keyCode+'*')" onkeypress="alert(event.keyCode+'**')" onkeyup="alert(event.keyCode+'***')">

Læg mærke til det sidste input felt efter knappen. Det er den jeg brugte til at finde ud af hvorden evente affyre, og fandt ud af at FF og IE gør det forskellig. Også her du kan se at FF ikke får værdien fra press.
Avatar billede bodyguard Nybegynder
31. august 2009 - 20:19 #4
fennec> Kom med et svar :)
Avatar billede bodyguard Nybegynder
16. maj 2010 - 20:28 #5
Lukket
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester