Michael Neubert: Radio-Button innerhalb eines Formular Arrays ansprechen

Hi,

das Ansprechen eines Radio-Buttons innerhalb eines Formular Arrays führt bei mir zu ständigen Fehlermeldungen.

Beispielsyntax:

<form name="test" action="test.php" method="post">
   <input type="text" name="daten[geburtstag]" size="10">
   <input type="radio" name="daten[kontakt]" value="0"> nie<br>
   <input type="radio" name="daten[kontakt]" value="1"> immer<br>
   <input type="radio" name="daten[kontakt]" value="2"> manchmal<br>
</form>

Mit Java Script möchte ich nun ein Feld innerhalb des Formulars Fokusieren. Mit dem Textfeld geht das ohne Probleme mit:

document.test['daten[geburtstag]'].focus();

Leider ist es mir aber nicht gelungen, einen Radio-Button zu fokusieren:

document.test['daten[['geburtstag[1]']]'].focus();

Dies führt zu Fehlermeldungen. Das spätere auslesen des Radio-Buttons per PHP ist kein Problem ($daten[kontakt]), nur das Fokusieren funktioniert eben nicht.

Vielleicht kann mir ja jemand helfen.

Danke im Vorraus.

Michael N.

  1. Hallo Michael,

    versuch es mal mit document.test.daten['geburtstag'][1].focus();

    Gruß Ralf

    1. Hallo Michael,

      versuch es mal mit document.test.daten['geburtstag'][1].focus();

      Gruß Ralf

      Hallo Ralf,

      klappt leider auch nicht. Folgende Konstrukte scheiterten bisher:

      document.test['daten[['kontakt[1]']]'].focus();
      document.test['daten[kontakt][1]'].focus();
      document.test.daten['kontakt'][1].focus();
      document.test.daten['kontakt[1]'].focus();

      Gruß
      Michael

      1. Moin!

        Folgende Konstrukte scheiterten bisher:

        document.test['daten[['kontakt[1]']]'].focus();

        Das klappt wegen mangelhafter '-Escapung nicht.

        document.test['daten[kontakt][1]'].focus();

        Es gibt kein Element, welches <input name="daten[kontakt][1]" ...> ist.

        document.test.daten['kontakt'][1].focus();

        Es gibt kein Element, welches im Formular test enthalten ist, name="daten" heißt, ein Array-Unterelement namens 'kontakt' besitzt, welches wiederum ein Array-Unterelement "1" besitzt.

        document.test.daten['kontakt[1]'].focus();

        Es gibt kein Element im Formular test, welches name="daten" heißt und ein Array-Unterelement namens 'kontakt[1]' besitzt.

        - Sven Rautenberg

        --
        Signatur oder nicht Signatur - das ist hier die Frage!
  2. Moin!

    <input type="radio" name="daten[kontakt]" value="2"> manchmal<br>

    document.test['daten[['geburtstag[1]']]'].focus();

    Punkt 1: Deine Radio-Buttons heißen "daten[kontakt]", nicht "daten[['geburstag[1]']]".

    Punkt 2: Du solltest dich für einen Stringbegrenzer entscheiden (hier hast du ' genommen, und mußt dann jedes Auftreten dieses Stringbegrenzers innerhalb des Strings mit dem Backslash escapen, damit der String nicht schon wieder beendet wird.

    Du greifst also auf document.test['daten[[' zu, und geburtstag[1]']]'].focus() ist eine unverständliche Anweisung.

    - Sven Rautenberg

    --
    Signatur oder nicht Signatur - das ist hier die Frage!
    1. Hi,

      Moin!

      <input type="radio" name="daten[kontakt]" value="2"> manchmal<br>

      document.test['daten[['geburtstag[1]']]'].focus();

      Punkt 1: Deine Radio-Buttons heißen "daten[kontakt]", nicht "daten[['geburstag[1]']]".

      Sorry, mein Fehler. Hatte mich im Posting verschrieben. Im Sourcecode stand natürlich "Kontakt".

      Punkt 2: Du solltest dich für einen Stringbegrenzer entscheiden (hier hast du ' genommen, und mußt dann jedes Auftreten dieses Stringbegrenzers innerhalb des Strings mit dem Backslash escapen, damit der String nicht schon wieder beendet wird.

      Du greifst also auf document.test['daten[[' zu, und geburtstag[1]']]'].focus() ist eine unverständliche Anweisung.

      - Sven Rautenberg

      Ich habe folgendes ausprobiert:
      document.test['daten[['kontakt[1]']]'].focus();

      Hat leider auch nicht geholfen.

      Gruß
      Michael

      1. Moin!

        Ich habe folgendes ausprobiert:
        document.test['daten[['kontakt[1]']]'].focus();

        Hat leider auch nicht geholfen.

        Logisch, denn das Feld-Array heißt ja auch "daten[kontakt]", und nicht "daten[['kontakt[1]']]"

        Der Name ist also falsch. Außerdem willst du ein einzelnes Element dieses Arrays ansprechen - das macht man, indem man _hinter_ dem Namen noch einen Array-Index angibt.

        document.test['daten[kontakt]'][1].focus() ist das, was du oben unglücklich versucht hattest auszudrücken. Da gebe ich aber noch keine Garantie drauf, dass das jetzt geht.

        - Sven Rautenberg

        --
        Signatur oder nicht Signatur - das ist hier die Frage!
        1. Hi,

          vielen Dank. Dein Vorschlag hat funktioniert:

          document.test['daten[kontakt]'][1].focus();

          Ich glaub jetzt weiß ich auch, wo mein Denkfehler innerhalb der Datenstruktur lag .. :-)

          Gruß
          Michael