Moritz: Zwei Abschick-Button in einem Formular

Hallo zusammen,

ich habe folgendes Problem: In einem Formular habe ich zwei Links, mit denen man das Formular abschicken kann. Nun will ich, dass wenn man auf Link 1 klickt, das Formular z.B an index.php?action=form1 geschickt wird. Klickt man Link 2 an, so soll das Formular an index.php?action=form2 gesendet werden. Habt ihr eine Idee, wie ich das machen kann?

  1. Hallo Moritz!

    Indem Du Deinen Buttons eindeutige Namen gibst und auf der datenempfangenden Seite schaust welcher Button angekommen (geklickt wurde) ist.

    Schönen Gruß

    Afra

    1. Hi,

      Indem Du Deinen Buttons eindeutige Namen gibst und auf der datenempfangenden Seite schaust welcher Button angekommen (geklickt wurde) ist.

      so koennte man ohne JavaScript herausfinden welches button geklickt worden ist. Kleine Nachfrage: Funktioniert das in allen Browsern zuverlaessig?

      Gruss,
      Ludger

      1. Hallo Ludger!

        Kleine Nachfrage: Funktioniert das in allen Browsern zuverlaessig?

        Zumindest hatte ich damit bisher noch keine Probleme. Vielleicht gibt es ja Browser die einem Formelement bei Submit einen anderen Namen und Value zuordnen, das wäre mir aber neu ;o)

        Schönen Gruß

        Afra

        1. Danke für eure schnellen Antworten, ich hab jetzt die Lösung

      2. Hi Ludger,

        Kleine Nachfrage: Funktioniert das in allen Browsern zuverlaessig?

        Ehrliche Antwort: Nein.

        Hintergrund: Wenn man in den Eingabefeldern (<input>) die Eingabetaste betätigt, dann wird das Formular abgeschickt. Dabei reagieren Browser verschieden. Serverseitig wirst Du in diesem Falle wahrscheinlich Probleme haben, den betätigten Submit-Button zu ermitteln.

        Vorschlag: Wenn Du schon in form1 und form2 unterscheidest, dann mach doch zwei verschiedene <form>s! Damit hätte jedes Formular seinen eigenen Submit-Button und kann auch mit der Eingabetaste korrekt abgeschickt und ausgewertet werden.

        Liebe Grüße aus Ellwangen,

        Felix Riesterer.

        1. Hi,

          Kleine Nachfrage: Funktioniert das in allen Browsern zuverlaessig?
          Ehrliche Antwort: Nein.

          Hintergrund: Wenn man in den Eingabefeldern (<input>) die Eingabetaste betätigt, dann wird das Formular abgeschickt. Dabei reagieren Browser verschieden. Serverseitig wirst Du in diesem Falle wahrscheinlich Probleme haben, den betätigten Submit-Button zu ermitteln.

          ja, ich hatte da sowas aus aelteren Diskussionen hier in Erinnerung. Wenn Du Lust und Zeit hast, koenntest Du bitte "wahrscheinlich Probleme haben" noch etwas ausfuehren? (Ich vermute mal, dass man bei verschiedenen submit buttons bei einer form denselben Namen fuer die "Submits" verwendet, aber unterschiedliche value Attributwerte. Und beim submitten per Return ist dann der Attributwert immer '' (Leerstring). Und das Abschicken per Return kann man wiederum nicht verhindern?)

          Gruss,
          Ludger

          1. Lieber Ludger,

            koenntest Du bitte "wahrscheinlich Probleme haben" noch etwas ausfuehren? (Ich vermute mal, dass man bei verschiedenen submit buttons bei einer form denselben Namen fuer die "Submits" verwendet

            NEIN!!! Mit dem Namen unterscheidest Du sie ja gerade (serverseitig)!
            <input type="submit" name="dieser_mein_erster_submitknopf" value="abschicken und weg damit!">
            <input type="submit" name="mein_zweiter_submitknopf_der_noch_schoener_ist" value="Bitte jetzt versenden.">

            Und beim submitten per Return ist dann der Attributwert immer '' (Leerstring). Und das Abschicken per Return kann man wiederum nicht verhindern?)

            Nix "Attributwert"! => Submitknopf-Name! Der Server bekommt den für den Submitknopf vergebenen Namen mit übertragen. Eigentlich.
            Genau hier reagieren die Browser nicht einheitlich. Näheres erläutert Dir das Archiv. Dort habe ich auch zum ersten Mal davon gelesen. Alles, was ich hier von mir gebe, habe ich dort her... :-)

            Liebe Grüße aus Ellwangen,

            Felix Riesterer.

            1. Hallo miteinander,

              Genau hier reagieren die Browser nicht einheitlich. Näheres erläutert Dir das Archiv. Dort habe ich auch zum ersten Mal davon gelesen. Alles, was ich hier von mir gebe, habe ich dort her... :-)

              Soweit ich mich erinnere, gab es nur Probleme, wenn man den <button> verwendet. Bei mehreren <input type="submit"> läuft die Chose aber rund.
              Nur beim Abschicken des Formulars mit der Return-Taste ist natürlich nicht eindeutig geregelt, welchem Submit-Button das Ereignis dann zugeordnet wird. Genau da (Auswahl eines Submit bei Mehrdeutigkeit) machen die Browser noch Unterschiede. Und da kann man ihnen eigentlich keinen Vorwurf machen.

              Schönen Tag noch,

              Martin

              1. Hello,

                Nur beim Abschicken des Formulars mit der Return-Taste ist natürlich nicht eindeutig geregelt, welchem Submit-Button das Ereignis dann zugeordnet wird. Genau da (Auswahl eines Submit bei Mehrdeutigkeit) machen die Browser noch Unterschiede. Und da kann man ihnen eigentlich keinen Vorwurf machen.

                Eigentlich kann man den Entwicklern schon einen Vorwurf machen.
                Wenn nämlich der Focus auf Button Nr. 2 steht, und der Browser würde bei Return nun trotzdem den Button Nr. 1 übertragen, wäre das keinesfalls in Ordnung.

                Das Problem gibt es nur, wenn kein Button den Focus hat. Da haben dann manche Entwickler wohl gedacht: nehmen wir den ersten erreichbaren.

                Darauf muss man dann eben Rücksicht nehmen, und den ersten immer mit einer unschädlichen Funktion belegen.

                Harzliche Grüße aus http://www.annerschbarrich.de

                Tom

                --
                Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
                Nur selber lernen macht schlau
                1. Hallo Tom!

                  Wenn nämlich der Focus auf Button Nr. 2 steht, und der Browser würde bei Return nun trotzdem den Button Nr. 1 übertragen, wäre das keinesfalls in Ordnung.

                  Da stimme ich dir vorbehaltlos zu.
                  Aber das ist ja auch nicht das Problem. Wenn ein Button den Focus hat, dann gilt das Drücken der Return-Taste auch _diesem_ Button und ist gleichwertig mit dem Anklicken desselben (oder kennst du ein GUI, bei dem das nicht so ist?).

                  Und wenn ein Button den Focus hat, dann eigentlich nur dadurch, dass der Anwender mit der Tab-Taste durch die Formularelemente navigiert. Dann unterstelle ich ihm aber auch, dass er weiß, was er tut. Und dass er bewusst gerade _diesen_ Button ausgewählt hat.

                  Das Problem gibt es nur, wenn kein Button den Focus hat.

                  Genau, wenn also z.B. ein Textfeld den Focus hat.

                  Da haben dann manche Entwickler wohl gedacht: nehmen wir den ersten erreichbaren.

                  Yo. Ich habe aber hier auch schon Beiträge gelesen, aus denen ging hervor, dass Opera (ich glaube jedenfalls, der war's) dann nicht den ersten, sondern den letzten Submit-Button auswählt. Und ich dachte, _das_ sei das Problem, um das es ging.

                  Have a nice day,

                  Martin

        2. Hallo Felix!

          Natürlich hast Du recht wenn es um den Fall des Submits mittels Return geht. Entweder wird kein Wert übergeben (was man dann aber mittels einer Fehlermeldung abfangen kann), oder der erste Button in der Quelltextfolge wird als gedrückter angenommen. Dies kann man mit einer textlichen Erläuterung im Fomular abfangen. Wenn man komplexere Formulare hat sollte man erwarten, dass die Benutzer sich auch dies durchlesen. Im Doppelformular kann es ja genauso sein, dass der Benutzer noch in ein Formfeld der Form die er gar nicht ausfüllen wollte geklickt hat und dann mittles Return das falsche Formular absendet. Die absolute Sicherheit gibt es nirgends.

          Schönen Gruß

          Afra

  2. Hi,

    ich habe folgendes Problem: In einem Formular habe ich zwei Links, mit denen man das Formular abschicken kann. Nun will ich, dass wenn man auf Link 1 klickt, das Formular z.B an index.php?action=form1 geschickt wird. Klickt man Link 2 an, so soll das Formular an index.php?action=form2 gesendet werden. Habt ihr eine Idee, wie ich das machen kann?

    ja, mit JavaScript. Und zwar kann man, glaube ich, mit "documnt.FrameName.action=" diese setzen und zwar im OnClick Ereignis des jeweiligen submit buttons.

    Es geht glaube ich auch mit verschachtelten Formularen zumindest im IE, aber trotzdem sollte man die Finger davon lassen.   ;-)

    Gruss,
    Ludger