pcworld: IE und form-submit mit type="image"

Hallo!

Mir ist eben aufgefallen, dass, wenn ein Formular über einen Button mit type="image" abgesendet wird, das name-Attribut für die POST-Daten beim Internet Explorer nicht berücksichtigt wird.

Folgendes Test-Script in PHP (wobei abc.png ein Bild sein sollte):

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">  
<html>  
<head>  
 <title>Vergiss den IE-Test</title>  
</head>  
<body>  
<?php if (!isset($_GET['action'])) { ?>  
<form action="?action=abc" method="post">  
<fieldset>  
	<legend>Formular</legend>  
	<input type="image" src="abc.png" name="key" value="klick mich :-)"/>  
</fieldset>  
</form>  
<?php } else {  
	if (isset($_POST['key'])) {  
		echo '<p>Gesetzt: '.htmlspecialchars($_POST['key']).'</p>';  
	} else {  
		echo '<p>Nicht gesetzt.</p>';  
	}  
} ?>  
</body>  
</html>

Ausgabe beim Firefox 3: "Gesetzt: klick mich :-)"
Ausgabe beim Internet Explorer 7: "Nicht gesetzt."

Habe ich einen Fehler gemacht, bzw. kann ich diesen (vermutlichen) Bug beim IE "ausgleichen"?
Oder bin ich darauf angewiesen, type="image" nicht in dieser Form nutzen zu können?

Gruß,
pcworld

  1. Hi,

    Mir ist eben aufgefallen, dass, wenn ein Formular über einen Button mit type="image" abgesendet wird, das name-Attribut für die POST-Daten beim Internet Explorer nicht berücksichtigt wird.

    Willkommen in der Realität - wo warst Du die letzten Jahre?

    Daß IEs bei <input type="image"> nur die Koordinaten übermitteln, nicht aber den value, ist seit vielen Jahren bekannt.

    cu,
    Andreas

    --
    Warum nennt sich Andreas hier MudGuard?
    O o ostern ...
    Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.
    1. Willkommen in der Realität - wo warst Du die letzten Jahre?

      Daß IEs bei <input type="image"> nur die Koordinaten übermitteln, nicht aber den value, ist seit vielen Jahren bekannt.

      Die Koordinaten interessieren mich überhaupt nicht... :-)
      Gibt es mit CSS eine Möglichkeit, dass ich bei einem "normalen" Button mit type="submit" den eigentlichen Button unterdrücke und nur ein Bild angezeigt wird?
      JavaScript möchte ich dafür nicht benutzen.

      Gruß,
      pcworld

      1. Niemand eine Idee? Alles, was ich bis jetzt versucht habe, funktionierte nie in beiden Browsern, wie gewünscht.

        Gruß,
        pcworld

      2. Hi!

        Daß IEs bei <input type="image"> nur die Koordinaten übermitteln, nicht aber den value, ist seit vielen Jahren bekannt.
        Die Koordinaten interessieren mich überhaupt nicht... :-)

        Dann nimm ein zusätzliches hidden-Input mit dem gewünschten Name-Value-Paar.

        Gibt es mit CSS eine Möglichkeit, dass ich bei einem "normalen" Button mit type="submit" den eigentlichen Button unterdrücke und nur ein Bild angezeigt wird?

        Es gibt noch das button-Element, das frei mit Inhalt füllbar ist. Leider arbeitet es auch erst ab IE 8 im IE8-Modus (Meta-Element) fehlerfrei.

        Lo!

        1. Hallo!

          Dann nimm ein zusätzliches hidden-Input mit dem gewünschten Name-Value-Paar.

          Das Problem ist: Ich habe verschiedene submit-Buttons. Und ich möchte mit dem PHP-Script wissen, welcher Button geklickt wurde. Da bringt mir ein hidden-Element auch nichts. JavaScript möchte ich nicht einsetzen.

          Es gibt noch das button-Element, das frei mit Inhalt füllbar ist. Leider arbeitet es auch erst ab IE 8 im IE8-Modus (Meta-Element) fehlerfrei.

          Das habe ich auch feststellen müssen, dass es mit dem IE7 nicht funktioniert.
          Vermutlich werde ich doch das PHP-Script anpassen müssen (statt POST GET), und dann ein <img>-Element verlinken.

          Bei folgendem Code funktioniert wenigstens das mit den POST-Werten und dem Bild richtig, aber der IE unterdrückt die Schrift nicht (was der Firefox tut):
          <input type="submit" style="background-image: url(abc.png); color: transparent; background-color: transparent; width: 120px; height: 120px; border: none;" name="key" value="Klick mich Variante 2" />
          Weiß jemand, wie ich es auch im IE hinkriegen kann, die Schrift zu unterdrücken?

          Gruß,
          pcworld

          1. Hi!

            Dann nimm ein zusätzliches hidden-Input mit dem gewünschten Name-Value-Paar.
            Das Problem ist: Ich habe verschiedene submit-Buttons. Und ich möchte mit dem PHP-Script wissen, welcher Button geklickt wurde. Da bringt mir ein hidden-Element auch nichts. JavaScript möchte ich nicht einsetzen.

            Dann musst du nicht nach name sondern name_x suchen und unterschiedliche Werte für name verwenden.

            Bei folgendem Code funktioniert wenigstens das mit den POST-Werten und dem Bild richtig, aber der IE unterdrückt die Schrift nicht (was der Firefox tut):
            <input type="submit" style="background-image: url(abc.png); color: transparent; background-color: transparent; width: 120px; height: 120px; border: none;" name="key" value="Klick mich Variante 2" />
            Weiß jemand, wie ich es auch im IE hinkriegen kann, die Schrift zu unterdrücken?

            Der IE kennt transparent als Farbwert nicht, der kann das nur mit seinen Filtern.

            Lo!

            1. Dann musst du nicht nach name sondern name_x suchen und unterschiedliche Werte für name verwenden.

              Aber dann komme ich doch trotzdem nicht an den Value?!

              Der IE kennt transparent als Farbwert nicht, der kann das nur mit seinen Filtern.

              Werde mir das mit den Filtern mal anschauen.

              Gruß,
              pcworld

              1. Hi!

                Dann musst du nicht nach name sondern name_x suchen und unterschiedliche Werte für name verwenden.
                Aber dann komme ich doch trotzdem nicht an den Value?!

                Nein, den gibts nicht. Deswegen sagte ich, kannst du unterschiedliche Namen verwenden. Da dich die Koordinaten nicht interessieren, kannst du Namen à la foo[a], foo[b] etc. nehmen. Dann bekommst du in $_GET/_POST['foo'] ein Array, und mit key($_GET/_POST['foo']) das a oder b. Klappt mindestens in IE und FF.

                Lo!