Beate Mielke: Formulareingaben focussieren

Hallo Forum,

ich habe folgendes Problem:

In einem Formular sollen mehrere verschiedene zweistellige Zahlenangaben gemacht werden.

Ist es moeglich, den Focus fuer die Eingabe - nach Eingabe der jeweiligen zweiten Ziffer - gleich auf das naechste Eingabefeld zu plazieren, ohne dass der User vorher die Tabulatortaste betaetigen muss?

Viele Gruesse
Beate Mielke

  1. In einem Formular sollen mehrere verschiedene zweistellige Zahlenangaben gemacht werden.
    Ist es moeglich, den Focus fuer die Eingabe - nach Eingabe der jeweiligen zweiten Ziffer - gleich auf das naechste Eingabefeld zu plazieren, ohne dass der User vorher die Tabulatortaste betaetigen muss?

    Ich denke, der Trick wird darin bestehen, einen Event zu finden, der aktiviert wird, wenn Du eine Taste drückst. ("onChange" ist es wohl leider nicht.)
    Aber über irgendwelche onKeyPress-Events oder Ähnliches könntest Du an der passenden Stelle die Kontrolle bekommen. (Ich nix Objektmodell ...)

    Danach dann die Länge des Feldinhaltes zu prüfen und ggf. den Focus neu zu setzen dürfte kein Problem sein. (An dieser Stelle könntest Du dann auch gleich testen, daß wirklich Ziffern eingegeben wurden etc.)

  2. Hi Beate
    Ich hab mich mal mit deinem Problem beschaeftigt. Dabei hab ich wie von Michael vorgeschlagen den Eventhandler onKeypress verwendet. Das SetTimeout ist wohl deshalb notwendig, weil sonst der eingegebene Wert noch nicht im Input angekommen ist.
    <html>
    <head>
    <title>Formulartest</title>
    <script language="JavaScript">
    <!--
    function test(nr) {
    check=document.forms[0].elements[nr].value;
    if (check.length==2 && isNaN(check) != true){
    if (nr<4) nr++;
    document.forms[0].elements[nr].focus();}
    }
    //-->
    </script>
    </head>
    <body text="#000000" bgcolor="#FFFFFF" link="#FF0000" alink="#FF0000" vlink="#FF0000">
    <form action="" method="" target="">
    Input1:<input type="Text" name="input1" value="" size="2" maxlength="2" onKeypress="window.setTimeout('test(0)',100)"><br>
    <form action="" method="" target="">
    Input2:<input type="Text" name="input2" value="" size="2" maxlength="2" onKeypress="window.setTimeout('test(1)',100)"><br>
    <form action="" method="" target="">
    Input3:<input type="Text" name="input3" value="" size="2" maxlength="2" onKeypress="window.setTimeout('test(2)',100)"><br>
    <form action="" method="" target="">
    Input4:<input type="Text" name="input4" value="" size="2" maxlength="2" onKeypress="window.setTimeout('test(3)',100)"><br>
    <form action="" method="" target="">
    Input5:<input type="Text" name="input5" value="" size="2" maxlength="2" onKeypress="window.setTimeout('test(4)',100)"><br>
    </form>
    </body>
    </html>
    viele Gruesse Holger

    1. Ich hab mich mal mit deinem Problem beschaeftigt. Dabei hab ich wie von Michael vorgeschlagen den Eventhandler onKeypress verwendet.

      Bravo - so gefällt mir das Forum!

      Von JavaScript hätte ich nicht annähernd genug Detailwissen gehabt, um so etwas selbst auszuarbeiten ...

    2. Hallo Holger und Michael,

      ich habe es auf MSIE und Netscape getestet. Läuft einwandfrei.

      Vielen Dank ihr beiden und viel Gruesse

      Beate Mielke