IE: bei Enter-Taste Formular "richtig" absenden?
Jens Bannmann
- browser
Hallo,
ich habe folgendes Problem: Wenn man nicht auf den Submit-Button klickt, sondern ein Formular nur per Enter-Taste absendet, überträgt der IE nicht den Namen des benutzten Submit-Buttons (Mozilla hat damit keine Probleme). Da ich auf der Server-Seite aber auf diesen Namen angewiesen bin (zur Fallunterscheidung), müsste ich irgendwie sicherstellen dass beim Drücken der Enter-Taste auch einer der Submitbuttons "angeklickt" wird. Wie lässt sich dies realisieren? Und zwar möglichst nicht global, sondern pro Form (da es ja auch mehrere auf einer Seite geben kann).
Grüße,
Jens
Hallo,
ich habe folgendes Problem: Wenn man nicht auf den Submit-Button klickt, sondern ein Formular nur per Enter-Taste absendet, überträgt der IE nicht den Namen des benutzten Submit-Buttons
Wieviele Submit-Buttons gibt es in dem Formular? Mehrere? Das schließe ich mal aus dem unteren Teil ("einer der Submitbuttons)
Dann verhält sich IE also korrekt.
Denn es heißt ausdrücklich, daß bei mehreren Submit-Buttons nur derjenige erfolgreich sein kann, der tatsächlich genutzt wurde.
(Mozilla hat damit keine Probleme).
Sicher? Ich hab es noch nicht getestet.
War vielleicht beim Drücken der Taste im Mozilla zufällig der Focus auf einem der Submit-Buttons?
Da ich auf der Server-Seite aber auf diesen Namen angewiesen bin (zur Fallunterscheidung), müsste ich irgendwie sicherstellen dass beim Drücken der Enter-Taste auch einer der Submitbuttons "angeklickt" wird. Wie lässt sich dies realisieren? Und
zwar möglichst nicht global, sondern pro Form (da es ja auch mehrere auf einer Seite geben kann).
Das kannst Du ganz einfach realisieren: wenn keiner der Submit-Buttons übermittelt wurde, wurde die Form auf andere Weise (Tastatur, Javascript, ...) abgeschickt.
Auf irgendwelche clientseitigen Spielereien würde ich mich gar nicht erst einlassen - Du kannst Dich nicht darauf verlassen, daß der Client das von Dir benutzte Feature überhaupt hat.
Grüße,
Jens
Andreas
Wieviele Submit-Buttons gibt es in dem Formular? Mehrere? Das schließe ich mal aus dem unteren Teil ("einer der Submitbuttons)
Es geht nicht um ein spezielles Formular, sondern vielmehr eine Art Bibliothek zur Formularauswertung und Validierung auf dem Server. Und dieses unterstützt mehrere Arten von Buttons - Submit, Vor- und Zurück-Buttons bei mehrseitigen Formularen (wie bei Windows-Assistenten) usw. Und zur Unterscheidung zwischen diesen verschiedenen Buttons werden eben die Namen eingesetzt. Außerdem wird bei "keinem Button" davon ausgegangen, dass das Formular auch noch nicht abgeschickt wurde, und vielmehr das Formular (quasi "unausgefüllt") nur zum ersten mal angezeigt werden soll.
Dann verhält sich IE also korrekt.
Denn es heißt ausdrücklich, daß bei mehreren Submit-Buttons nur derjenige erfolgreich sein kann, der tatsächlich genutzt wurde.
Ja und nein. Der IE sendet bei der Enter-Taste NIEMALS einen Button-Namen, auch wenn es nur einen Button gibt. Mozilla hingegen sendet definitiv (bei Fokus z.B. in einem Textfeld) denjenigen Button, der im Quelltext als erstes definiert wurde.
Aber du hast recht, Client-Spielchen bringen da echt nur wenig. Ich werde die Bibliothek so anpassen, dass sie eine Art "Default-Button" besitzt der benutzt wird wenn ein IE-User mit Enter-Taste am Werk war...
Gruß & Danke,
Jens
Hallo.
ich habe folgendes Problem: Wenn man nicht auf den Submit-Button klickt, sondern ein Formular nur per Enter-Taste absendet, überträgt der IE nicht den Namen des benutzten Submit-Buttons (Mozilla hat damit keine Probleme).
Versteh ich nicht ganz, hast du mehrere Submit-Buttons oder mehrere Formulare?
Da Mozilla bei mehreren Submit-Buttons in einem <form>-tag den Namen des Submit-Buttons nicht übergibt, gehn ich jetzt mal von mehreren Formularen aus. Da wäre die Lösung dann ein hidden-input-field anstatt des Namens des Submit buttons zur Fallunterscheidung zu benutzen:
<form action=""><input type="hidden" name="formular" value="1"></form>
<form action=""><input type="hidden" name="formular" value="2"></form>
Ansonsten, d.h. bei 2 Submitbuttons in einem form geht's mit JavaScript:
<script type="text/javascript">
<!--
passed = false;
//-->
</script>
<form action="#" onsubmit="return passed">
<input type="text" name="buh" value="BUH!"><br>
<input type="submit" name="sub1" onclick="passed = true"><br>
<input type="submit" name="sub2" onclick="passed = true">
</form>
Gruß
Norbert
Versteh ich nicht ganz, hast du mehrere Submit-Buttons oder mehrere Formulare?
Sozusagen beides... lies mal meine Antwort auf Andreas' Beitrag, da ist das ganze genauer erklärt.
Da Mozilla bei mehreren Submit-Buttons in einem <form>-tag den Namen des Submit-Buttons nicht übergibt, ...
Also ich habe es mit Mozilla 0.9.7 ausprobiert, und er übergibt definitiv den Namen des ersten Buttons (auch wenn dieser nicht den Fokus hat).
Ansonsten, d.h. bei 2 Submitbuttons in einem form geht's mit JavaScript:
<script type="text/javascript">
<!--
passed = false;
//-->
</script>
<form action="#" onsubmit="return passed">
<input type="text" name="buh" value="BUH!"><br>
<input type="submit" name="sub1" onclick="passed = true"><br>
<input type="submit" name="sub2" onclick="passed = true">
</form>
Okay, vielleicht werde ich die Methode ergänzend benutzen, um diese Enter-Geschichte abzuschalten. Danke!
Gruß,
Jens