15. september 2003 - 08:47
Der er
2 kommentarer og
1 løsning
Flytte fokus når inputfelt når max længde
Hejsa
Hvordan får jeg flyttet fokus til det næste inputfelt, når
det aktuelle felt er nået maxlength?
Mvh. Brian
15. september 2003 - 09:00
#1
<script language="JavaScript">
function nextfocus(field,nextfield,limit){
if(field.value.length>=limit){
field.value=field.value.substring(0,limit);
document.getElementById(nextfield).focus();
}
}
</script>
<input type="text" name="test" onkeyup="return nextfocus(this,'test2',2);">
<input type="text" name="test2">
15. september 2003 - 11:45
#3
der er dog et problem med ovenstående kode, som gør sig gældende i to tilfælde
1) hvis du står i test2 kan du ikke komme tilbage til test1 uden at bruge musen... Den logiske forklaring er selvfølgelig at bruger du en genvejstast (f.eks. SHIFT-TAB) for at komme tilbage, vil dette også udløse en keyUp event -- og fokus vil blive ført til test2 igen.
2) forestil dig at du så vil ændre noget i test1 - du bruger musen til at få fokus i feltet og...
- med mindre du bruger BACKSPACE (<---) som så sletter det bagerste tegn, så vil du ikke kunne ændre data i feltet... Prøv f.eks. at bruge piltasterne til at flytte hen til et tegn, der skal ændres --- piltasterne laver også keyUp events... du vil ikke kunne placere din markør nogle steder i feltet test1 uden enten
1) slette min. et tegn, så maksimum ikke længere er nået
2) bruge musen til at placere markøren
Der er måder, dette kan undgås på, f.eks. ved at teste keyCode på eventen - hvis det er TAB, SHIFT-TAB, eller en af piltasterne, så kan man sige at der ikke er sket nogen ændring og derfor skal der ikke rykkes videre til næste felt.... På IE kan man også arbejde med "onPropertyChange"-eventen...
/Søren