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?
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>
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.