Stefan: getElementByName.focus()

Moin, moin,

für eine Formularüberprüfung bastel ich mir gerade eine Funktion. Da ich verschiedene gleichartige input-Felder habe, will ich natürlich eine Funktion für alle Felder schreiben. Also übergebe ich den Feldnamen beim Funktionsaufruf onChange="Check(this.value,'name_des_feldes')"
Die Funktion checkt dann, ob alles richtig ist und wenn nicht, wird der Feldinhalt gelöscht - kein Problem. (document.getElementsByName(name_des_feldes)[0].value="";)
Um es den User leichter mit der Neueingabe zu machen, will ich dann den focus auf das entsprechende Feld setzen. Genau das bekomme ich aber nicht hin. Probiert habe ich:
document.getElementsByName(name_des_feldes)[0].focus();
und
document.Name_des_Formulars.elements[''+name_des_feldes].focus();
und einige Spielarten davon :)

Hat jemand einen Tipp wie es funktioniert oder warum es nicht geht?
Herzlichen Dank schon mal im Voraus :)

Viele Grüße
Stefan

  1. Hallo,

    Die Funktion checkt dann, ob alles richtig ist und wenn nicht, wird der Feldinhalt gelöscht - kein Problem. (document.getElementsByName(name_des_feldes)[0].value="";)
    Um es den User leichter mit der Neueingabe zu machen, will ich dann den focus auf das entsprechende Feld setzen. Genau das bekomme ich aber nicht hin. Probiert habe ich:
    document.getElementsByName(name_des_feldes)[0].focus();
    und
    document.Name_des_Formulars.elements[''+name_des_feldes].focus();
    und einige Spielarten davon :)

    Ich sehe da kein Problem:

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    <title>Test by TM 11/02</title>
    </head>
    <body>
    <form action="">
    <input type="text" name="abc"><br>
    <input type="text" name="abc"><br>
    <input type="text" name="abc"><br>
    <input type="text" name="abc"><br>
    <input type="text" name="abc"><br>
    <input type="button" value="Test 1" onclick="document.getElementsByName('abc')[2].focus()">
    <input type="button" value="Test 2" onclick="document.forms[0].elements['abc'][3].focus()">
    </form>
    </body>
    </html>

    Allerdings ist zu beachten, dass die Collection der Elemente mit gleichem Namen nur erzeugt wird, wenn es mehr als 1 gleichartig benanntes Element gibt.

    MfG, Thomas

    1. [Nachtrag:]

      Allerdings ist zu beachten, dass die Collection der Elemente mit gleichem Namen nur erzeugt wird, wenn es mehr als 1 gleichartig benanntes Element gibt.

      Gemeint waren die forms-elements-Collections. Fuer document.getElementsByName() gilt das nicht.

      MfG, Thomas

    2. Moin,

      ich glaube, wir reden aneinandervorbei :)
      Dein Beispiel ist tatsächlich kein Problem :)

      Gemeint ist allerdings:

      <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
      <html>
      <head>
      <title>Test by TM 11/02 - Vers.1.1</title>
      <script>
      function check(value,field)
      {
        if (value = Blödsinn)
        {
          document.getElementsByName(field)[0].value="";
          document.getElementsByName(field)[0].focus();
        }
      }
      </script>
      </head>
      <body>
      <form action="">
      <input type="text" name="abc" onchange="check(this.value,'abc')"><br>
      <input type="text" name="def" onchange="check(this.value,'def')"><br>
      <input type="text" name="ghi" onchange="check(this.value,'ghi')"><br>
      <input type=submit>
      </form>
      </body>
      </html>

      Verständlicher? Jedenfalls funzt das Value-setzen, aber das focus() eben nicht!

      Grüße und Danke
      Stefan

      1. Moin,
        <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
        <html>
        <head>
        <title>Test by TM 11/02 - Vers.1.1</title>
        <script>

        function check(field)

        {
            if (field.value == Blödsinn)
            {

        field.value="";
                field.focus();
           }
         }
        </script>
        </head>
        <body>
        <form action="">
        <input type="text" name="abc" onchange="check(this)"><br>
        <input type="text" name="def" onchange="check(this)"><br>
        <input type="text" name="ghi" onchange="check(this)"><br>
        <input type=submit>
        </form>
        </body>
        </html>

        und das funktioniert sogar in 3'er Browsern.

        Struppi.

        1. und das funktioniert sogar in 3'er Browsern.

          Danke, aber bei mir funktioniert das auch im 5er Browser nicht ;)

          Habe ich vielleicht irgendwo einen Denkfehler?

          Grüße
          Stefan

          1. und das funktioniert sogar in 3'er Browsern.

            Danke, aber bei mir funktioniert das auch im 5er Browser nicht ;)

            Habe ich vielleicht irgendwo einen Denkfehler?

            Der Code war kein orginal Code sondern nur sinnbildlich.

            OK nochmal:

            <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
            <html>
            <head>
            <title>Test by TM 11/02 - Vers.1.1</title>
            <script>
            function check(field)
            {
              if (!field.value)
              {
                field.value = "";
                field..focus();
              }
            }
            </script>
            </head>
            <body>
            <form action="">
            <input type="text" name="abc" onchange="check(this)"><br>
            <input type="text" name="def" onchange="check(this)"><br>
            <input type="text" name="ghi" onchange="check(this)"><br>
            <input type=submit>
            </form>
            </body>
            </html>

            1. und das funktioniert sogar in 3'er Browsern.

              Danke, aber bei mir funktioniert das auch im 5er Browser nicht ;)

              Habe ich vielleicht irgendwo einen Denkfehler?

              Der Code war kein orginal Code sondern nur sinnbildlich.

              OK nochmal:

              <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
              <html>
              <head>
              <title>Test by TM 11/02 - Vers.1.1</title>
              <script>
              function check(field)
              {
                if (!field.value)

              Das ist natürlich blödsinn:

              Muss heissen z.b.: if (field.value == 'ungültig')

            2. Der Code war kein orginal Code sondern nur sinnbildlich.

              Ja, schon klar!
              Ich habe jetzt auch nochmal ein Minibeispiel ausprobiert - es funktioniert nicht: der focus() wird nicht auf das entsprechende Feld gesetzt. Mist!

              Trotzdem danke, denn ich habe trotzdem was von Dir gelernt :)

              Grüße
              Stefan

              1. Der Code war kein orginal Code sondern nur sinnbildlich.

                Ja, schon klar!
                Ich habe jetzt auch nochmal ein Minibeispiel ausprobiert - es funktioniert nicht: der focus() wird nicht auf das entsprechende Feld gesetzt. Mist!

                Also bei mir funktioniert es tadellos.

              2. Hallo,

                Ich habe jetzt auch nochmal ein Minibeispiel ausprobiert - es funktioniert nicht: der focus() wird nicht auf das entsprechende Feld gesetzt. Mist!

                Versuche mal onblur="..." statt onchange="...".

                MfG, Thomas

                1. Hallo,

                  Ich habe jetzt auch nochmal ein Minibeispiel ausprobiert - es funktioniert nicht: der focus() wird nicht auf das entsprechende Feld gesetzt. Mist!

                  Versuche mal onblur="..." statt onchange="...".

                  Dankeschön! So funktioniert's!

                  :)
                  Stefan

            3. und das funktioniert sogar in 3'er Browsern.

              Danke, aber bei mir funktioniert das auch im 5er Browser nicht ;)

              Habe ich vielleicht irgendwo einen Denkfehler?

              Der Code war kein orginal Code sondern nur sinnbildlich.

              OK nochmal:

              <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
              <html>
              <head>
              <title>Test by TM 11/02 - Vers.1.1</title>
              <script>
              function check(field)
              {
                if (!field.value)
                {
                  field.value = "";
                  field..focus();

              Ach ich vergaß.

              Mit welchen Browsere testest du denn?
              Siehst du nicht die Fehlermeldung?

              richtig: field.focus();

              Struppi.

  2. Moin, moin,

    für eine Formularüberprüfung bastel ich mir gerade eine Funktion. Da ich verschiedene gleichartige input-Felder habe, will ich natürlich eine Funktion für alle Felder schreiben. Also übergebe ich den Feldnamen beim Funktionsaufruf onChange="Check(this.value,'name_des_feldes')"
    Die Funktion checkt dann, ob alles richtig ist und wenn nicht, wird der Feldinhalt gelöscht - kein Problem. (document.getElementsByName(name_des_feldes)[0].value="";)

    Wenn du schon this verwendest, warum dann nicht konsequent?

    onChange="check(this);"

    functiuon check(e)
    {
       el.value =  "";
       el.focus();
    }

    Struppi.