Kurt: Formularelemente mit gleichem Namen erlaubt

Hi

Dürfen unterschiedliche Formularelemente das gleiche 'name' haben?
(Betsimmt keinen neue Frage kanns aber im Archiv nicht finden)

Wenn in einem Formular mehrere Inputs den gleichen Namen haben sendet sie Firefox sie alle und in der richtigen Reihenfolge im get-Query ab.

Kann ich mich darauf verlassen, dass dieses Verhalten Standard ist?
Kennt jmd Browser die Formelemente gleichen Namens verwurschten und/oder die Reihenfolge ändern?

Tschau
  Kurt

  1. Hi,

    Dürfen unterschiedliche Formularelemente das gleiche 'name' haben?

    sie dürfen nicht nur - manchmal müssen sie. Durch den identischen Namen werden Radiogroups gebildet.

    Wenn in einem Formular mehrere Inputs den gleichen Namen haben sendet sie Firefox sie alle und in der richtigen Reihenfolge im get-Query ab.
    Kann ich mich darauf verlassen, dass dieses Verhalten Standard ist?

    Nach meinem Dafürhalten ja.

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. Hi

      Dürfen unterschiedliche Formularelemente das gleiche 'name' haben?

      sie dürfen nicht nur - manchmal müssen sie. Durch den identischen Namen werden Radiogroups gebildet.

      Ah ...stimmt!!!

      Danke
       Kurt

  2. Hell-O!

    Dürfen unterschiedliche Formularelemente das gleiche 'name' haben?

    Ja.

    Wenn in einem Formular mehrere Inputs den gleichen Namen haben sendet sie Firefox sie alle und in der richtigen Reihenfolge im get-Query ab.

    So ist es nicht nur im Firefox.

    Kann ich mich darauf verlassen, dass dieses Verhalten Standard ist?

    Ja, das kannst du. Der Browser prüft nicht, ob bereits ein Name/Wert-Paar für dieses Formularelement existiert.

    Kennt jmd Browser die Formelemente gleichen Namens verwurschten und/oder die Reihenfolge ändern?

    Ersteres ist mir nicht bekannt, auf zweiteres würde ich mich nicht verlassen. Allerdings ist mir schleierhaft, wie du die verschiedenen Typen (Textfelder, Radiobuttons, Auswahllisten etc.) auseinanderhalten willst. Es wäre m.E. besser, den Elementen eindeutige Namen zu geben. Warum willst du sowas überhaupt tun?

    Siechfred

    --
    Ich bin strenggenommen auch nur interessierter Laie. (molily)
    Siechfreds Tagebuch || Falle Aufteilungsbescheid || RT 221 Erfurt-Altstadt i.V.
    1. Hi

      Es wäre m.E. besser, den Elementen eindeutige Namen zu geben. Warum willst du sowas überhaupt tun?

      Es ist ein dynamisches Formular mit ner (logischen) Baumstruktur wo man immer wieder per DHTML Teile hinzufügen kann.

      z.B.
      Stufe 1 Familienmitglied
      Stufe 2 Telefonnummer

      Familienmitglieder und Telefonnummern kanns unzählige geben, und ich will vermeiden jedesmal einen 'name' der Form 'Familienmitglied_3_Telefonnummer_2' generieren zu müssen.

      Wenn ich weiß dass die Formularelemente streng linear übertragen werden, dann reicht es mir sowas wie (ich brech den Query mal um)

      Mitglied=Uschi
      & Nummer=0190668668
      & Nummer=069151515
      & Mitglied=Bert
      & Nummer=069151516

      zu parsen um die genauen Daten zu bekommen.

      Versteht ihr was ich meine?

      VG
       Kurt

      1. hi,

        Es ist ein dynamisches Formular mit ner (logischen) Baumstruktur wo man immer wieder per DHTML Teile hinzufügen kann.

        Auch dabei sollte eine ebenso dynamisch durchgeführte Nummerierung ja machbar sein.

        Damit wärst du auf der sicheren Seite, denn Skeeve hat Recht mit seiner Aussage, dass leere Felder nicht übertragen werden müssen:

        17.13.2 Successful controls:
        "If a control doesn't have a current value when the form is submitted, user agents are not required to treat it as a successful control."

        gruß,
        wahsaga

        --
        /voodoo.css:
        #GeorgeWBush { position:absolute; bottom:-6ft; }
        1. Hi

          Auch dabei sollte eine ebenso dynamisch durchgeführte Nummerierung ja machbar sein.

          ja klar, aber ich will meinen Code immer so schlank und elegant wie möglich halten...

          Allerdings bringt das mit dem DHTML bereits beim FF die Reihenfolge durcheinander, (wobei ich ehrlicherweise kein createNode gemacht habe sondern innerHTML manipuliere)

          tschö
            Kurt

        2. Hi

          Ein weiteres Argument für Nummerierung ist dass ich mit CGI.pm gar nicht so einfach an die Reihenfolge der values rankomme.

          "Handelt es sich um die Daten eines Auswahlfelds mit Mehrfachselektion, so wird ein Array zurückgegeben.

          @werte = $anfrage->param("multiauswahl");"

          das ist für radios ja auch ganz gut, aber bei mir ...

          tschö
            Kurt

      2. habe d'ehre Kurt

        Es ist ein dynamisches Formular mit ner (logischen) Baumstruktur wo man immer wieder per DHTML Teile hinzufügen kann.

        Ich hab mir einen Formbuilder geschrieben, bei der die Formularfelder in Arrays gepackt werden.

        $ffield_name[]  fuer die Namen (hidden)
        $ffield_value[] fuer die Eingaben

        man liest sich
        Wilhelm

  3. Moin!

    Verwurschtet (= unterschlagen) werden sie nicht. Die Reihenfolge ist m.W. aber nicht definiert, kann also mit dem nächsten Browser ganz anders sein, als Du erwartest.

    Zudem könnte auch das hier auftreten:
    Name=Hein
    Telefon=
    Name=
    Telefon=1245

    Damit würdest Du "Hein" die Nummer "1245" zuordnen, da m.W. ein Browser leere Felder nicht übertragen muß, Du das erste Telefon und das zweite Name gar nicht zu sehen bekommst.

    Numeriere durch und Du bist auf der sicheren Seite.

    -- Skeeve

    1. Ui danke

      Damit würdest Du "Hein" die Nummer "1245" zuordnen, da m.W. ein Browser leere Felder nicht übertragen muß, Du das erste Telefon und das zweite Name gar nicht zu sehen bekommst.

      das sit ein wertvoller Tip, die konsisitenz der SDaten könnte ich also Serverseitig gar nicht checken ...

      danke danke .... hab kein MY, kann jmd das hier als hilfreich bewerten :)

      tschö
        Kurt

    2. Hi

      kleiner Nachtrag ...

      Zudem könnte auch das hier auftreten:
      Name=Hein
      Telefon=
      Name=
      Telefon=1245

      Damit würdest Du "Hein" die Nummer "1245" zuordnen, da m.W. ein Browser leere Felder nicht übertragen muß, Du das erste Telefon und das zweite Name gar nicht zu sehen bekommst.

      Gut aber falls die Reihenfolge stimmt dann könnte ich mit Hidden-Inputs als Trenner arbeiten, also

      Hidden=Mitglied
       Name=Hein
       Telefon=
       Hidden=Mitglied
       Name=
       Telefon=1245

      Gruß
        Kurt

      1. Moin!

        Gut aber falls die Reihenfolge stimmt dann könnte ich mit Hidden-Inputs als Trenner arbeiten, also

        Stimmt. Aber wozu das Risiko eingehen? Was ist am Numerieren so schlimm?

        -- Skeeve

        1. Hi

          Gut aber falls die Reihenfolge stimmt dann könnte ich mit Hidden-Inputs als Trenner arbeiten, also
          Stimmt. Aber wozu das Risiko eingehen? Was ist am Numerieren so schlimm?

          Habs gestern gecoded und traue dem Code auch noch nicht ganz, ist halt ne Fehlerquelle und Komplexitätsfaktor mehr, auf das ich gerne verzichten würde...

          Da ichs jetzt schon so gelöst habe ist die Diskussion von meiner Seite auch nur noch der Vollständigkeit halber. Insbesondere habe ich mich auf CGI.pm eingeschossen und die Reihenfolge der values ist da auch nicht trivial herauszubekommen.
          (bei perlhashes hab ich AFAIK eh keine Möglichkeit die ursprüngliche Reihenfolge rauszufinden)

          tschö
            Kurt

          1. Moin!

            Habs gestern gecoded und traue dem Code auch noch nicht ganz, ist halt ne Fehlerquelle und Komplexitätsfaktor mehr, auf das ich gerne verzichten würde...

            Das ist aber etwas, was Du in der Hand hast. Das andere wäre eine Fehlerquelle, die Du nicht unter Kontrolle hättest.

            Zeig halt einfach mal den Code. Wenn hier genügend Leute draufschauen, dann werden sich wohl die offensichtlichen Probleme schnell offenbaren.

            -- Skeeve