TomC: action und target in einem Formular überschreiben

Hallo miteinander,

aus irgend einem Grund komme ich nicht drauf, wo mein Denkfehler sitzt. Vielleicht könnt Ihr mir helfen.

Ich habe ein Bestellformular, in das der Kunde diverse Daten eintragen kann. Wird das Formular submittet, wird die Bestellung versendet und es erscheint eine Bestätigung im gleichen Fenster. Soweit sehr unspannend.

Nun möchte ich die Möglichkeit anbieten, das ausgefüllt Formular für eine Bestellung per Fax auszudrucken. Eine leicht modifizierte Seite soll zu diesem Zweck in einem neuen Fenster angezeigt werden. Dazu verwende ich einen Button, der onClick ein Javascript aufruft. Dieses Script weist den Attributen action und target neue Werte zu (Script, das eine Druckversion der Bestellung generiert sowie ein neues Fenster als Ziel). Zuletzt wird das Formular submitted.

Nur: Trotz erfolgreicher Wertzuweisung wird das ursprüngliche Script aufgerufen, das die Bestellung per Mail versendet.

<pre>
[...]
      <script type="text/javascript">
      function printOrder(){
         document.OrderForm.action.value = '/cgi-bin/bin/printorderform.pl';
         document.OrderForm.target = '_blank';
         alert('action is '+document.OrderForm.action.value+', target is '+document.OrderForm.target);
         document.OrderForm.submit();
      }
      </script>
      <h2>Your Data<img src="$path_all/img/dot_orange.gif" width="500" height="1" border="0"></h2>
      <p><br></p>
      <form name="OrderForm" action="/cgi-bin/bin/mailsender.pl" method="post" onsubmit="return CheckOrderForm();" target="_self">
         <input type="hidden" name="action" value="order">
         <input type="hidden" name="session" value="$sid">
         <input type="hidden" name="order" value="$items_for_mailing">
         <input type="hidden" name="sum" value="$sum_all Euro">
         <table><tr><td>
[...]
#Eingabefelder für persönliche Daten
[...]
            <tr><td $table_style_caption><input class="butt80" type="reset" value="reset form" border="0"></td>
                <td $table_style_edit><input class="butt150" type="submit" value="send your order now" border="0"><br>
                <button type="button" name="print" class="butt150" onclick="printOrder();">Just print form for fax order</button></td></tr>
         </table>
      </form>
</pre>
[...]

Warum werden beim Submit durch das Script printOrder() die alten Attribut-Werte des Formulars verwendet???
Es ist mir ein Rätsel.

Gruß von TomC

  1. Hi Tom,

    Dieses Script weist den Attributen action und target neue Werte zu (Script, das eine Druckversion der Bestellung generiert sowie ein neues Fenster als Ziel). Zuletzt wird das Formular submitted.

    Du hast ein inputfeld auch action genannt, damit kommt deine Javascriptfunktion nicht klar...und füllt das action-inputfeld statt das Attribut. Du müsstest das Inputfeld umbenennen.

    Ach ja, und dem Attribut action wird der Wert folgendermaßen zugewiesen:
    document.OrderForm.action = '/cgi-bin/bin/printorderform.pl';

    Hoffe, das hilft dir weiter...

    Gruß
    Axel

    1. Du hast ein inputfeld auch action genannt, damit kommt deine Javascriptfunktion nicht klar...und füllt das action-inputfeld statt das Attribut. Du müsstest das Inputfeld umbenennen.

      Aaaahh, Schmerz, na klar!
      DANKE, DANKE, DANKE!
      Jetzt geht es.

      Gruß von TomC