jay: zwei Submit Buttons als Link an zwei verschiedene URL's

Hallo,
ich möchte gerne zwei Submit Buttons erstellen. Einen normalen, der das Formular an URL1 sendet und einen zweiten per Link, der das selbe Formular an URL2 sendet (der zweite soll die Daten an eine Preview Seite senden)
Ich habe schon verschiedenes versucht u.a anstatt einer Funktion alles im onclick unterzubringen. Oder statt form.action habe ich document.myform.action=''; und anderes versucht. Mein letzter Versuch der auch nicht funktioniert (Link Button bleibt tot) sieht so aus:

<script language="JavaScript" type="text/javascript">  
function prev () {  
  form.action='feedback-thx.php';  
  form.submit();  
  return true;  
}  
  
</script>
<input type="submit" class="button6" value="submit" onclick="javascript: form.action='feedback-thx.php';"/>  
<input type="submit" class="button6" value="preview" onclick="javascript: form.action='feedback-prev.php';"/>  
<a href="javascript:;" onclick="javascript:this.form.prev();">[PREVIEW] </a></p>

Vielen dank schon mal für eure Hilfe

  1. Hi,

    ich möchte gerne zwei Submit Buttons erstellen. Einen normalen, der das Formular an URL1 sendet und einen zweiten per Link, der das selbe Formular an URL2 sendet (der zweite soll die Daten an eine Preview Seite senden)

    Was spricht dagegen Serverseitig auszuwerten welcher Button gedrückt wurde und dort entsprechend weiter verarbeiten?

    Dann funktionierts sogar ohne JS.

    ~dave

  2. hallo,

    <input type="submit" class="button6" value="submit" onclick="javascript: form.action='feedback-thx.php';"/>

    <input type="submit" class="button6" value="preview" onclick="javascript: form.action='feedback-prev.php';"/>
    <a href="javascript:;" onclick="javascript:this.form.prev();">[PREVIEW] </a></p>

      
    gib den Buttons den gleichen Namen. Serverseitig wird dann der Inhalt des Buttons geprüft und je nach Auswahl halt die Vorschau angezeigt oder das Formular gesendet.  
      
    könnte so aussehen:  
    if($\_POST["button"] == "preview")  
    {  
    // mach die Vorschau  
    }  
    elseif($\_POST["button"] == "submit")  
    {  
    // sende das Formular  
    }  
      
    überhaupt würde ich dir empfehlen, nicht an verschiedene Dateien zu senden, sondern an die gleiche. Stichwort: Affenformular  
      
    grüße,  
    henman
    
    -- 
    "Sir! We are surrounded!" - "Excellent! We can attack in any direction!"
    
    1. Danke für die rasche Hilfe,

      ich werde es einmal Server seitig versuchen, ich wusste nicht, dass es so eine einfache Möglichkeit gibt, verschiedene Buttons auszuwerten.

      Lider muss ich eine neue php zur Auswertung verwenden, da das Formular selbst via highslide geöffnet wird, die Auswertung aber wieder in der normalen Seite/Umgebung (wegen Darstellung etc) stattfinden soll.

      Aber nochmals danke für die Hilfe.

  3. Hi,

    ich möchte gerne zwei Submit Buttons erstellen. Einen normalen, der das Formular an URL1 sendet und einen zweiten per Link, der das selbe Formular an URL2 sendet (der zweite soll die Daten an eine Preview Seite senden)

    das löst man üblicherweise so, wie dave schon andeutet: Zwei gewöhnliche Submit-Buttons mit unterschiedlichen names und/oder values, die das Formular beide "ganz normal" abschicken. Das auswertende Script auf dem Server (z.B. in PHP) untersucht dann, welcher der beiden Submit-Buttons benutzt wurde (welches name/value-Paar übergeben wurde), und reagiert entsprechend unterschiedlich.

    Mein letzter Versuch der auch nicht funktioniert (Link Button bleibt tot) sieht so aus:

    <a href="javascript:;" onclick="javascript:this.form.prev();">[PREVIEW] </a>

    Da sollte sich aber schon etwas zeigen - nämlich eine Fehlermeldung! Im onclick-Handler bezieht sich this auf das Element, dem der Handler zugeordnet ist - hier also auf das a-Element. Ein a-Element hat aber keine Eigenschaft 'form'. Abgesehen davon ist die Sprungmarke "javascript:" hier völlig überflüssig.

    So long,
     Martin

    --
    Was bleibt vom Dreieck übrig, wenn man ihm ein Ei klaut? - Ein Dreck.
  4. Hallo,
    nun stehe ich doch vor einem weiteren Problem. Ich versuche nun wie von euch vorgeschlagen das ganze Server seitig zu lösen. Wie bekomme ich nun den Button Wert in meinen Link um ihn dann wie von herman vorgeschlagen auswerten zu können? Hier mein Test Formular mit den beiden Submit Buttons:

    <form action="feedback-thx.php"  method="post" name="feedback" id="feedback" >  
      <input type="submit" class="button6" value="submit"/>  
    <a href="#" onclick="javascript:document.feedback.submit();">[PREVIEW] </a>  
    </form>
    

    Vielen dank,
    Jay

    1. Hi,

      nun stehe ich doch vor einem weiteren Problem.

      ja, offensichtlich einem Verständnisproblem. :-)

      Ich versuche nun wie von euch vorgeschlagen das ganze Server seitig zu lösen. Wie bekomme ich nun den Button Wert in meinen Link

      Gar nicht, vergiss den Link!
      Grundgerüst:

      <form action="feedback-thx.php" method="post">  
       Ein paar normale Formularfelder:  
       <input type="text" ...>  
        
       <input type="submit" name="send" value="Absenden">  
       <input type="submit" name="prev" value="Vorschau">  
      </form>
      

      Du hast deinen Submit-Button nicht mit einem name-Attribut ausgestattet, darum wurde er gar nicht mit den Formulardaten übertragen. Jetzt haben wir zwei Submit-Buttons, und du bekommst je nachdem, welcher geklickt wurde, entweder den URL-Parameter send="Absenden" oder prev="Vorschau" mit übertragen. Der Wert (value) braucht dich ja gar nicht zu interessieren; es genügt, wenn du das Vorhandensein von $_POST["send"] oder $_POST["prev"] abfragst:

      if (isset($_POST["send"]))  
       { // hier Formulardaten endgültig verarbeiten  
       }  
      else  
       { // hier nur Vorschau  
       }
      

      Beachte: Wenn das Formular nur durch Drücken der Eingabetaste abgeschickt wurde, ohne dass ein Submit-Button betätigt wird, senden einige Browser pauschal das name/value-Pärchen des ersten Submit-Buttons im Formular, manche lassen es ganz weg. Überlege dir daher, welche der beiden Aktionen du als Default ausführen willst, und formuliere die Abfrage entsprechend.

      So long,
       Martin

      --
      Die letzten Worte des Privatdetektivs:
      Jetzt wird es mir klar: SIE sind der Mörder!
  5. Hallo nochml,
    @Der Martin:
    hehe, mit dem "Verständnisproblem" hast du wohl nicht ganz unrecht. Aber getreu dem Motto "sag niemals Nie" und "nichts ist unmöglich" habe ich das Problem nun mit eurer Hilfe und der Hilfe folgender Seite, lösen können. http://www.thesitewizard.com/archive/textsubmit.shtml

    Ich will euch das ganze natürlich nicht vorenthalten.
    Meine erste Herangehensweise nur mit reinem Javascript und zwei getrennten Auswertungen hätte - wie ich jetzt herausgefunden habe - wohl sogar auch funktioniert. Es lag nur an Highslide, was ich für das Aufpoppen dieses Formulars verwende. Im aufgepoppten Fenster funktionieren wohl keine Javascript Funktionen?! Oder was auch immer, jedenfalls wenn man die Funktion in die Datei packt, von der aus Highslide ausgeführt wird, klappt's. Vielen Dank aber an alle, da ich auf die wirklich bessere Lösung mit nur einer Datei für die Auswertung nicht gekommen wäre.

    Nun aber mal hier mein komplettes Formular samt Auswertung mit einem normalen Submit Button und einem als Link:

    FORMULAR DATEI:

    <script language="JavaScript" type="text/javascript">  
    <!--  
    function getsupport ( selectedtype )  
    {  
      document.supportform.supporttype.value = selectedtype ;  
      document.supportform.submit() ;  
    }  
    -->  
    </script>  
      
      
    <form name="supportform" action="feedback-test.php" method="post" >  
    <input type="hidden" name="supporttype" />  
    <input type="submit" class="button6" value="submit" onclick="javascript:getsupport('submit');"/>  
    <a href="javascript:getsupport('prev')">[PREVIEW]</a>  
    </form>  
    
    

    AUSWERTENDE PHP DATEI (feedback-test.php):

    <?php  
    if($_POST["supporttype"] == "prev")  
    {  
    // mach die Vorschau  
    }  
    elseif($_POST["supporttype"] == "submit")  
    {  
    // sende das Formular  
    }  
    ?>