Thoralf Knuth: /CSS <button> als Verweis, Formulare schachteln?

Beitrag lesen

Hallo,

wie kann ich einen Button als Link verwenden? *bg* Wer jetzt panisch am Tisch kaut, sorry. ;)

http://de.selfhtml.org/navigation/faq.htm#button_als_verweis kenne ich natürlich, nur klappt das so, wie ich das will, leider nicht.

Ausgangssituation:
Ich habe eine Formular mit einem Submit-Button, klappt einwandfrei. Dieses Formular ist Teil einer Rückfrage.

Ziel:
Ich möchte in diesem Formular einen Button haben, der den Vorgang abbricht bzw. nicht auslöst. Bloßes Reset ist nicht ausreichend, ich will zurück zur vorhergehenden Übersicht.

Problem:
JavaScript-Eventhandler will ich vermeiden.
Es muss sich typischen Windows/IE-Nutzern erschließen und in sich stimmig bleiben.

Code:

  
<form action="[code lang=php]<?=$_SERVER["PHP_SELF"];?>
~~~" method="post" class="...">  
 <!-- ... -->  
 <strong>Datum:</strong> `<?=strftime( "%A, %d.%m.%Y", strtotime( $arr[$iIdx]["datum"] ));?>`{:.language-php}<br />  
 <input type="hidden" id="i" name="i" value="`<?=$iIdx;?>`{:.language-php}" />  
 <!-- ... -->  
 <button type="submit" id="sicherheitsabfrage" name="sicherheitsabfrage" value="Ja">Wirklich? (...)</button>  
</form>  
[/code]  
  
Meine Lösungen(en):  
1\. Einfach ein normaler Link als "Nein".  
Valide, Semantisch korrekt, aber häßlich. Leider gibt es wohl keinen CSS-Möglichkeit, das clientseitige Button-Aussehen zu kopieren.  
  
2\. GET statt POST-Parameter und alles per Link machen.  
Valide, Semantisch korrekt, aber häßlich. Dann müsste ich im gesamten Projekt alle Buttons selbst einheitlich per CSS umgestalten, genau das will ich nicht.  
  
3\. Wie in <http://de.selfhtml.org/navigation/faq.htm#button_als_verweis> ein zweites Formular  
~~~html
  
<form action="[code lang=php]<?=$_SERVER["PHP_SELF"];?>
~~~" method="post" class="...">  
 <!-- ... -->  
 <strong>Datum:</strong> `<?=strftime( "%A, %d.%m.%Y", strtotime( $arr[$iIdx]["datum"] ));?>`{:.language-php}<br />  
 <input type="hidden" id="i" name="i" value="`<?=$iIdx;?>`{:.language-php}" />  
 <!-- ... -->  
 <button type="submit" id="sicherheitsabfrage" name="sicherheitsabfrage" value="Ja">Wirklich? (...)</button>  
</form>  
<form action="index.php" method="get">  
 <button type="submit">Ich bin nicht sicher</button>  
</form>  
[/code]  
Valide, Semantisch korrekt, aber häßlich. Die Buttons müssen nebeneinander, das ist überall so. ;)  
  
4\. Damit kam ich auf:  
~~~html
  
<form action="[code lang=php]<?=$_SERVER["PHP_SELF"];?>
~~~" method="post" class="...">  
 <!-- ... -->  
 <strong>Datum:</strong> `<?=strftime( "%A, %d.%m.%Y", strtotime( $arr[$iIdx]["datum"] ));?>`{:.language-php}<br />  
 <input type="hidden" id="i" name="i" value="`<?=$iIdx;?>`{:.language-php}" />  
 <!-- ... -->  
 <button type="submit" id="sicherheitsabfrage" name="sicherheitsabfrage" value="Ja">Wirklich? (...)</button>  
  
 <form style="display:inline;" action="index.php" method="get"><button type="submit">Ich bin nicht sicher</button></form>  
</form>  
[/code]  
Validiert, Tidy gibt nur eine Warnung, dass man Formulare nicht schachteln sollte.  
Semantisch bin ich nicht sicher, wie sauber ein solches Formular ist, immerhin wird es korrekt wieder geschlossen, passt also in die "Baumstruktur", als die ich mir HTML immr vorstelle.  
Problem: Beim Klick auf den Submit im inneren Formular wird aber die Action des äußeren Formulars aufgerufen. (`<?=$_SERVER["PHP_SELF"];?>`{:.language-php} valuiert zu loeschen.php)  
  
Sieht jemand eine Lösung oder einen Königsweg? Danke!  
  
Gruß, Thoralf

-- 
Sic Luceat Lux!