von einem input zum nächsten "springen"
felix
- javascript
hi there!
folgendes problem. ich habe zwei text-inputs.
wenn im ersten 4 Stellen eingegeben wurden soll der focus aufs zweite springen.
mein versuch:
function jumpnext()
{
var laenge = document.myform.kartenr1.value;
if (laenge.length == 4)
{
document.myform.kartenr2.focus();
}
}
funkeioniert leider nicht...
kann mir irgendwer weiterhelfen???
danke
felix
Hi Felix,
dein Versuch funzt schon, ich habe ihn trotzdem umgeschrieben, um ihn universeller zu machen.
<script language="JavaScript">
<!--
function jumpnext(which, target, limit)
{
if (document.forms['myform'].elements[which].value.length >= limit)
document.forms['myform'].elements[target].focus();
}
//-->
</script>
ich denke es ist klar was gemeint ist.
Nun zu deinem Problem. Die Dinger werden ja nicht automatisch getestet. Also, wenn in dem Feld eine Eingabe erfolgt, soll eine Überprüfung erfolgen:
<form name="myform">
<input type="text" name="eins" style="width:400px" maxlength="60" size="40"
onKeyup="jumpnext('eins', 'zwei', 4)"><br><br>
<input type="text" name="zwei" style="width:400px" maxlength="60" size="40"
onKeyup="jumpnext('zwei', 'drei', 7)"><br><br>
<input type="text" name="drei" style="width:400px" maxlength="60" size="40"
onKeyup="jumpnext('drei', 'eins', 4)"><br><br>
</form>
lies dir dazu auch mal
http://www.teamone.de/selfhtml/tebj.htm durch.
Bye Ed X
Ich weiß, die Lösung ist nicht ausgereift, bei erneutem Focus lässt sich zumindest noch eine Zahl mehr eingeben, aber das lässt sich elegant mit maxlength umgehen. Hängt von deiner anwendung ab.
oh...
vielen dank
felix
verdammt...
netscape macht mich fertig...
in v 4.07 funktioiert das ganze nur manchmal(!?). irgendwie nach lust und laune.
hat der probleme mit onKeyup??? kann man das irgendwie lösen?
danke
felix
Hallo Felix,
ich kenne das Problem, und es muss sich lösen lassen!!!!
Unter http://www.teamone.de/selfhtml/tecbc.htm#a1 findest du einen Sourcecode der angepasst werden muss.
Ich schau mal, vielleicht über' WE......
oder tüftel duch selber mal
so long
Ed X
hi Ed X!
also:
ich habs script nochmal bisschen umgeschrieben;
function jumpnext(which, target, limit)
{
var xxx = eval ("document.forms[0]."+which+".value.length");
if (xxx >= limit)
{
eval ("document.forms[0]."+target+".focus()");
}
}
und dann per onKeyup die function aufrufen.
das funktioniert auch, ABER:
in meinem (etwas komplexeren) dokument sind die inputs in ein paar verschachtelten tabellen und damit hat der nn 4.07 anscheinend probleme. wenn ich die inputs direkt hinters form-tag schreib, funktionierts. das is'n bisschen doof...
any idea?
thanks + nice weekend
felix
Hi felix,
das funktioniert auch, ABER:
in meinem (etwas komplexeren) dokument sind die inputs in ein paar verschachtelten tabellen und damit hat der nn 4.07 anscheinend probleme. wenn ich die inputs direkt hinters form-tag schreib, funktionierts. das is'n bisschen doof...
any idea?
also, wie versprochen nach dem WE aber keine Lösung (grmpf!!!)
ich habe mir überlegt woran das liegen könnte, und deine Problemschilderung legt nahe, das wir hier ein Performance Problem haben. Also, habe ich mich auf den Weg gemacht und NN4.0x mal gefragt was er davon hält. Fragestellung folgendermaßen:
<---------schnipp----------------->
<html>
<head>
<title>Untitled</title>
<script language="JavaScript1.2">
function losgehts(formname,obsfield,targetfield,limit)
{
alert(document.forms[formname].elements[obsfield].value);
return true;
}
</script>
</head>
<body>
<form name="testform" action="http://eddie/cgi-bin/bla.pl">
<input name="eins" maxlength="5" size="6" onkeyup="losgehts('testform','eins','zwei',4)">
</form>
</body></html>
<---------schnapp------------------->
bei der ersten Ausgabe ist das alertfenster leer. bei der zweiten zeigt er an, was du beim ersten mal reingeschrieben hast. So, also ist im Moment wenn onkeyup Erfolg meldet(und die Funktion startet) die Eingabe noch nicht im Value gelandet.
Eine Möglichkeit, wäre einen timeout zu setzen. Aber wenn jemand schnell hackt hast du ein Problem.
2. Möglichkeit, addiere 1 zum value, aber Du musst genau die Browserversion abfragen und wissen ab wann (NN4.1??) es normal funktioniert.
Ich denke aber nochmal darüber nach.
Bye Ed X