Tobias Klaucke: Uterschiedliche zwischen ie5 und ie6 bei submit buttons

Hallo,

ist das unterschiedliche Verhalten zwischen ie5 und ie6 schon aufgefallen:

...

function test() {
document.forms[0].action="xxxxxxxxx";
 document.forms[0].method="post";
 document.forms[0].submit();
}

....

<form>
...
<input type=submit value=" Test " onClick="test()">
...
</form>
...

Der ie5 hat nur das submit in der javascript Funktion ausgeführt. ie6 hingegen führt erst die javascript Funktion auf, Trägt die Action in das form ein, führt das submit in der Funktion aus und anschließend das submit des Buttons.
Ich erhalte also zwei submits auf die Form und deshalb wird die action jetzt zweimal ausgeführt.
Das Verhalten beim ie6 ist wohl richtig. Hier könnte man einfach das submit in der Funktion weglassen. Allerdings funktioniert es dann unter ie5 nicht mehr.

Habt ihr schon Erfahrungen mit dem Problem  oder tritt das nur unter unserer Konfiguration auf

Grüße

Tobias

  1. Hi,

    Der ie5 hat nur das submit in der javascript Funktion ausgeführt.

    ein eklatantes Fehlverhalten dieses Browsers.

    ie6 hingegen führt erst die javascript Funktion auf, Trägt die Action in das form ein, führt das submit in der Funktion aus und anschließend das submit des Buttons.

    Selbstverständlich. Der Event-Handler müsste false zurückliefern, wenn dies unterbunden werden sollte.

    Das Verhalten beim ie6 ist wohl richtig.

    Ja :-)

    Cheatah

    --
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
  2. Huhu Tobias

    ein etwas anderes Problem des IE mit Formular-Submit habe ich auch
    schon mal festgestellt.

    Das kann man sich hier anschauen (natürlich nur mit IE)

    http://www.maledivas.de/iebug/index.php

    Es scheint im IE diverse Bugs den Formularsubmit betreffend zu geben.

    Aktuell kämpfe ich gerade mit dem Problem, das der IE 6 (unter XP) häufig abstürzt, wenn man per Copy+Paste Daten aus Word in ein Textarea steckt und das Formular abschickt.

    Abgesehen davon, dass man aus Word nicht unbedingt direkt
    Copy+Pasten sollte (aber wie erklärt man das den Kunden),
    sind alle Seiten valide und in Opera, Mozilla und Co. gibt es
    keine Probleme, auch nicht mit den "non SGML characters" die aus Word
    übernommen werden.

    Da kann man wohl nichts machen, ausser natürlich einen anderen
    Browser zu benutzen (aber wie erklärt man das den Kunden).

    Verzweifelte Grüße

    lulu

    --
    bythewaythewebsuxgoofflineandenjoytheday
    1. Da kann man wohl nichts machen, ausser natürlich einen anderen
      Browser zu benutzen (aber wie erklärt man das den Kunden).

      "Optimiert für.."

    2. Das wird ja immer besser.

      Ist Dir schon mal aufgefallen, dass wenn die Seite nur ein <imput type="text"> Feld hat das onClick Event beim [Enter] gar nicht abgefangen wird. Nur wenn der Button tatsächlich mit der Mouse geklickt wird wird das event Abgefangen. Sobald zwei input-Felder auf der Seite sind funktioniert es auch mit [Enter].
      logisch????

      1. Hi,

        Ist Dir schon mal aufgefallen, dass wenn die Seite nur ein <imput type="text"> Feld hat das onClick Event beim [Enter] gar nicht abgefangen wird.

        warum sollte sowas auffallen? Ich bin bisher noch nie auf den Gedanken gekommen, ein onClick-Handler könne etwas auf anderes als einen Klick reagieren.

        Sobald zwei input-Felder auf der Seite sind funktioniert es auch mit [Enter].

        Der Browser, mit dem Du dies erlebt hast, ist defekt.

        Cheatah

        --
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes
        1. Na ja - auf den ersten Blick ist es mir nicht klar, dass ein betätigen der [Enter] Taste ein anderes Event auslöst wird. OK man kann das so sehen und irgendwo ist es auch logisch. Allerdings kann das Event beim ie immer abgefangen werden - sogar beim [Enter]. Sollte das nicht funktionieren dann sind hier alle Browser Installationen defekt. Die Frage ist halt wie [Enter] in diesem Fall interpretiert wird. Der ie setzt es wohl einem Mouse click gleich.

          Tobias

          1. Hi,

            Sollte das nicht funktionieren dann sind hier alle Browser Installationen defekt.

            ich sagte nicht, die Installation sei defekt, sondern der Browser. Das Betätigen der Enter-Taste ist nun mal kein Klick, also hat das onClick-Event nicht zu feuern.

            Die Frage ist halt wie [Enter] in diesem Fall interpretiert wird.

            Augenscheinlich falsch.

            Cheatah

            --
            X-Will-Answer-Email: No
            X-Please-Search-Archive-First: Absolutely Yes
            1. Augenscheinlich falsch.

              Einverstanden

              tobias

            2. Hallo Cheatah,

              ich sagte nicht, die Installation sei defekt, sondern der Browser. Das Betätigen der Enter-Taste ist nun mal kein Klick, also hat das onClick-Event nicht zu feuern.

              Die Frage ist halt wie [Enter] in diesem Fall interpretiert wird.

              Augenscheinlich falsch.

              Stimmt, aber:

              Ich habe folgendes mal mit IE 5.5, Mozilla 1.3.1 und Opera 6.05 getestet (Windows NT). Alle drei reagieren gleich: Wenn Du mit Tab den Focus auf den Button setzt und Enter drückst, feuert der onclick-Event. Scheinen also alle drei kaputt zu sein...

              <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
                      "http://www.w3.org/TR/html4/loose.dtd">
              <html>
              <head><title>Test</title></head>
              <body>
              <form>
               <input type="button" value="Test" onclick="alert('test');">
              </form>
              </body>
              </html>

              Grüße
              Andreas

              --
              Hier könnte Ihre Werbung stehen.
              1. Hi,

                Wenn Du mit Tab den Focus auf den Button setzt und Enter drückst, feuert der onclick-Event.

                ja, weil Du Dich auf dem Button befindest. Wenn ich Tobias richtig verstanden habe, befand sich bei seinen Tests der Fokus auf einem völlig anderen Element.

                Cheatah

                --
                X-Will-Answer-Email: No
                X-Please-Search-Archive-First: Absolutely Yes
                1. Hallo Cheatah,

                  Wenn Du mit Tab den Focus auf den Button setzt und Enter drückst, feuert der onclick-Event.

                  ja, weil Du Dich auf dem Button befindest. Wenn ich Tobias richtig verstanden habe, befand sich bei seinen Tests der Fokus auf einem völlig anderen Element.

                  Darf ich Dich nochmal zitieren?

                  Das Betätigen der Enter-Taste ist nun mal kein Klick, also hat das onClick-Event nicht zu feuern.

                  Das Betätigen der Enter-Taste ist also dann ein Mausklick, wenn sich der Fokus auf dem Element befindet?

                  Mal abgesehen davon, mir ist aufgefallen, dass Tobias von Textfeldern geschrieben hat. Mit zwei Textfeldern konnte ich das beschriebene Verhalten allerdings in keinem der drei Browser nachvollziehen.

                  Grüße
                  Andreas

                  --
                  Hier könnte Ihre Werbung stehen.
                  1. Hi,

                    Darf ich Dich nochmal zitieren?

                    in meiner Aussage fehlt der Zusatz "auf ein anderes Element". Im Kontext hielt ich das wohl für etwas zu klar.

                    Das Betätigen der Enter-Taste ist also dann ein Mausklick, wenn sich der Fokus auf dem Element befindet?

                    Nein, ein Mausklick ist es immer noch nicht. Es triggert aber das selbe Event an.

                    Cheatah

                    --
                    X-Will-Answer-Email: No
                    X-Please-Search-Archive-First: Absolutely Yes
                    1. Hallo Cheatah,

                      in meiner Aussage fehlt der Zusatz "auf ein anderes Element". Im Kontext hielt ich das wohl für etwas zu klar.

                      Okay, und ich hatte mich wohl zu sehr in Richtung _Maus_klick verrannt. Das von Tobias beschriebene Verhalten konnte ich dennoch nicht nachvollziehen.

                      Grüße
                      Andreas

                      --
                      Hier könnte Ihre Werbung stehen.
                      1. Das von Tobias beschriebene Verhalten konnte ich dennoch nicht nachvollziehen.

                        ich schau mal ob ich den Code auftreiben kann. Das Verhalten ist bei der Seite einer Kollegin aufgetreten.

                        Später mehr.

                        Tobias

                      2. <html>
                        <head>
                          <title></title>
                          <script language="JavaScript">
                          <!--
                            function test() {
                              alert("test");
                            }
                          //-->
                          </script>
                        </head>
                        <body>
                          <form>
                          <table>
                            <tr>
                              <td>Test:</td>
                              <td><input type="text" name="testFeld1" size="40" value=""></td>
                              <!--td><input type="text" name="testFeld2" size="40" value=""></td-->
                            </tr>
                          </table>
                          <table>
                            <tr>
                              <td><input type="submit" name="btnTest" value=" T E S T " onClick="javascript:test()"></td>
                            </tr>
                          </table>
                        </form>
                        </body>
                        </html>

                        So ich haben den Code etwas angepasst und das verhalten ist bei mir nachvollziehbar. Solange das zweite Input Feld auskommentiert ist passiert beim Enter "nichts". Wird es einkommentiert wir beim Enter die die Funktion test() aufgerufen.

                        Gruese

                        Tobias

                        1. Hallo Tobias,

                          Ich habe Deinen Code gerade mal mit IE und Mozilla getestet.

                          Fangen wir mit zwei Formularfeldern an, da verhalten sich beide Browser gleich:
                          Drücke ich Enter, nachdem die Seite aufgerufen wurde passiert gar nichts. Wenn ich aber den Focus auf eins der Textfelder setze und Enter drücke, feuert der Click-Event des Buttons. Ich interpretiere das mal so, dass jetzt das _Formular_ den Focus hat, mit Enter submitted wird und deswegen der Click-Event feuert (so, als ob ich das Formular durch Klick auf den Button submitted hätte [1]).

                          Kommentiere ich allerdings wie in Deinem Beispiel das zweite Textfeld wieder aus, verhalten sich die Browser unterschiedlich:
                          Mozilla verhält sich wie oben; im IE passiert allerdings, wie Du schriebst, gar nichts. Warum der IE sich bei einem Textfeld anders verhält als bei zweien ist mir unklar. Ist wohl wirklich ein Bug.

                          [1] Ich glaube, ich habe irgendwo auch mal gelesen, dass dem so wäre, kann mich aber im Moment nicht mehr dran erinnern wo.

                          Grüße
                          Andreas

                          --
                          Hier könnte Ihre Werbung stehen.
                          1. Wird nicht der letzte Bug sein ;-))

                            Danke für Deine Mühe

                            Gruesse

                            Tobias

      2. Hi Tobias!

        Ist Dir schon mal aufgefallen, dass wenn die Seite nur ein <imput type="text"> Feld hat das onClick Event beim [Enter] gar nicht abgefangen wird. Nur wenn der Button tatsächlich mit der Mouse geklickt wird wird das event Abgefangen. Sobald zwei input-Felder auf der Seite sind funktioniert es auch mit [Enter].
        logisch????

        Eigentlich ist es schon logisch. Wenn man auf http://msdn.microsoft.com/workshop/author/dhtml/reference/objects/form.asp schaut, steht da der Satz "If the form includes only one text box and the user presses ENTER, the onsubmit event fires." Das kann nun bedeuten, dass eben kein onclick-Event bei ENTER ausgelöst wird, sondern nur onsubmit.

        Ich hab's mir jetzt erspart beim W3C zu suchen, was die da geregelt haben :-)

        Gruß,
        Martin