Saty: Unterschiedliches Verhalten FF/IE bei buttons

Hallo,

ich bastel grade an einem Schiffe-Versenken-Spiel auf PHP/HTML/CSS/JS-Basis.

Es klappt bis jetzt alles wunderbar, nur habe ich grade ein unterschiedliches Verhalten von Firefox und IE beim Klick auf einen submit-button.

Hier die Seite:

http://www.satyrium.de/coding/ships/

  • das Spielfeld ist ein 2-dimensionales Array, die eingeblendeten Text-Labels, entsprechen den Array-Elementen
  • das Spielfeld wird mit zwei for-Schleifen aufgebaut, jedes Feld besteht aus einem submit-button

Button-Code:

<button type="submit" name="clicked" value="'.$x.':'.$y.'">'.$x.':'.$y.'</button>

$x und $y sind die Zähler der beiden for-Schleifen.

Jetzt zum unterschiedlichen Verhalten:

  • im Firefox steht nach Absenden der richtige Wert in $_POST['clicked'], sprich der Wert des geklickten Buttons
  • im IE steht _immer_ der Wert des letzten Buttons vom Spielfeld in $_POST['clicked']

Wie kommt das?

Grüße,
Saty

  1. Hi,

    Wie kommt das?

    der IE kann mit <button> nicht umgehen. Da value-Attribut und Element den selben Inhalt besitzen, sollte ein simples <input type="submit"> genügen.

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. sollte ein simples <input type="submit"> genügen.

      In der Tat. :-)

      Wie kann ich denn dann noch das Darstellen des values unterbinden?
      Wenn ich was drüber lege, ist ja dann der input nicht mehr erreichbar.

      Vielen Dank schonmal,
      Saty

      1. Hi,

        Wie kann ich denn dann noch das Darstellen des values unterbinden?

        auf dieses Feature wirst Du beim IE verzichten müssen. Bei einem <button> versendet er den Element-Inhalt, bei einem <input type="image"> nur die Klickposition, nicht das name/value-pair. Möglichkeiten wie den Content mit :before wegzuschieben kennt er ebenfalls nicht.

        Wenn ich was drüber lege, ist ja dann der input nicht mehr erreichbar.

        Wenn Dir eine Lösung einfällt, poste sie bitte - gerne in einem neuen Thread (wenn dies jemand als Doppelposting deklariert, verweise ihn auf meine Bitte).

        Cheatah

        --
        X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
        X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes
        1. Wenn Dir eine Lösung einfällt, poste sie bitte - gerne in einem neuen Thread (wenn dies jemand als Doppelposting deklariert, verweise ihn auf meine Bitte).

          Es war einfacher als gedacht...

          color = background-color

          :-)

          Danke für den Input, und auch Dir dedflix für die Aufklärung.
          Den Test werde ich auf alle Fälle nochmal versuchen.

  2. echo $begrüßung;

    • im IE steht _immer_ der Wert des letzten Buttons vom Spielfeld in $_POST['clicked']
      Wie kommt das?

    Dass der IE (zumindest der 6er) beim <button> fehlerhaft arbeitet hat Cheatah ja schon erwähnt. Wenn du mal ein kleines Experiment machen möchstest: Setzt method im <form> mal auf get, dann siehst du beim Absenden des Formulars in der Adresszeile, dass die name-value-Pärchen sämtlicher <buttons> mitgesendet werden. Und name-value-Pärchen sind es auch gar nicht, sondern name-Content-Pärchen. Das fällt in deinem Fall nur nicht auf, weil value und Content bei dir gleich sind.

    Beide Fehler, Content statt value und alle Buttons absenden, sind bekannt. Und für beide gibt es einen Workaround mit Javascript: Setz die name- und value-Attribute erst bei einem onclick-Ereignis: <button type="submit" onclick="this.name='myname';this.value='myvalue';">content</button> Dann gibt es nur ein <button>-element mit einem name-Attribut, die anderen werden ignoriert, und - oh Wunder! - sogar der value-Inhalt kommt mit und nicht der Content.

    echo "$verabschiedung $name";