opi: button vs. input

Hallo zusammen,

mit einer Art Workflow lasse ich die Felder eines Formulars
ausfüllen.

<form action="/cgi/workflow.cgi" method="POST">
   <select name="Beispiel" size="1" onchange="form.submit()">
      <options ...

Sobald ein Wert aus der Liste ausgewählt wird füllt sich die nächste
Auswahlliste mit Werten oder aktualisiert sich, falls in einer
oberen Auswahlliste ein anderer Wert ausgewählt wird.

Zum Absenden des gesamten Formulars möchte ich den button-Tag nutzen

<button type="submit" name"aktion" value="Absenden">Absenden</button>

Sobald ich mit meinem CGI-Skript das Wertpaar aktion=Absenden
erhalte, werden die Daten verarbeitet.

Das Wertepaar des Buttons wird allerdings immer abgesendet, sobald
ich einen Listenwert verändere und das Skript gibt einen oder
mehrere Fehler aus, weil noch nicht alle Felder ausgefüllt wurden.

Wenn ich allerdings

<input type="submit" name="aktion" value="Absenden">

statt <button> nutze, dann ist das nicht der Fall und das Wertepaar
aktion=Absenden wird nur dann versendet, wenn man auch tatsächlich
auf den Button klickt.

Kann ich das für <button> auch so definieren, so dass der Wert nur
gesendet wird, wenn der Button auch angeklickt wurde oder muss ich
für mein Vorhaben den Button mittels <input type="submit" ...
erstellen?

Greez,
opi

--
Selfcode: ie:( fl:( br:^ va:) ls:] fo:) rl:( n4:? ss:| de:] ch:? mo:|
  1. Hallo,

    mit einer Art Workflow lasse ich die Felder eines Formulars
    ausfüllen.

    <form action="/cgi/workflow.cgi" method="POST">
       <select name="Beispiel" size="1" onchange="form.submit()">

    ^Bitte schreib hier this.form.submit(). Dass es auch ohne this funktioniert, ist Fehlertoleranz der Browser. Man sollte sich nicht drauf verlassen.

    <options ...

    Sobald ein Wert aus der Liste ausgewählt wird füllt sich die nächste

    Dass dies nur mit aktiviertem JavaScript funktioniert, ist Dir klar?

    <button type="submit" name"aktion" value="Absenden">Absenden</button>
    Das Wertepaar des Buttons wird allerdings immer abgesendet,

    Ja, der IE macht das falsch. Richtig ist das Verhalten der Gecko basierten Browser.

    Kann ich das für <button> auch so definieren, so dass der Wert nur
    gesendet wird, wenn der Button auch angeklickt wurde oder muss ich
    für mein Vorhaben den Button mittels <input type="submit" ...
    erstellen?

    Für den IE geht das nicht mit BUTTON. Da Du aber JavaScript ohnehin voraussetzt, könntest Du bei SELECT.onchange den Button per JavaScript disabled setzten. Dann wird er nicht mitgesendet.

    <select name="Beispiel" size="1" onchange="this.form.elements['aktion'].disabled=true; this.form.submit();">

    viele Grüße

    Axel

    1. Hallo Axel,

      <form action="/cgi/workflow.cgi" method="POST">
         <select name="Beispiel" size="1" onchange="form.submit()">
                                                       ^Bitte schreib

      hier this.form.submit().

      sorry, ich kann kein absolut kein JavaScript.
      Ich habe es aber sofort geändert.

      Sobald ein Wert aus der Liste ausgewählt wird füllt sich die nächste
      Dass dies nur mit aktiviertem JavaScript funktioniert, ist Dir klar?

      Ja, in dem Unternehmen, in dem ich arbeite, ist JavaScript in allen
      Browsern (IE5.5) profilbedingt freigeschaltet, da unsere Intranet-
      seiten in JavaScript - nicht von mir :-) - geschrieben sind.
      Ich versuche möglichst immer nur CSS zu nutzen, aber leider mag der
      IE manche Dinge nicht. Dann löse ich das mit JavaScript.

      für mein Vorhaben den Button mittels <input type="submit" ...
      erstellen?
      Für den IE geht das nicht mit BUTTON. Da Du aber JavaScript ohnehin voraussetzt, könntest Du bei SELECT.onchange den Button per JavaScript disabled setzten. Dann wird er nicht mitgesendet.

      <select name="Beispiel" size="1" onchange="this.form.elements['aktion'].disabled=true; this.form.submit();">

      Ok, danke.

      Greez,
      opi

      --
      Selfcode: ie:( fl:( br:^ va:) ls:] fo:) rl:( n4:? ss:| de:] ch:? mo:|