Enter ich Liebe es......
aetzchen
- php
Hallo,
ich baue momentan ein Affenformular. Es ist notwendig das es ein Affenformular sein muss, weil alles in einer datei passieren soll. Dieses Formular hat mehrere Seiten.
Das heißt ich habe ein formular und mache Eingaben und sende sie an sich selbst.
action=""
Mit einem Zaehler stelle ich fest auf welcher seite ich mich befinde.
if ($_SESSION['page']=="2"){
}
bei $_POST['back'] zaehle ich eins runter und
bei $_POST['weiter'] eins hoch
Wenn ich ein formular nun mit "Enter" absende habe ich kein
$_POST['back']
$_POST['weiter']
Hat jemand eine Idee wie ich das sonst lösen könnte?
MfG
Hi aetzchen,
Wenn ich ein formular nun mit "Enter" absende habe ich kein
$_POST['back']
$_POST['weiter']
sind das denn die name-Attribute deiner submits?
Gruß
Antipitch
sind das denn die name-Attribute deiner submits?
Ja sind Sie.
Grüße
Warum übermittelst Du nicht ein entsprechendes Hidden-Field, dass angibt, auf welcher Seite Du Dich befindest und zählst hoch, es sei denn, dass der Zurück-Button einen Wert zurückgibt?
Eine andere einigermaßen elegante Möglichkeit besteht natürlich darin, das Formular per JavaScript in mehrere Blöcke aufzuteilen und nur diese der "aktuellen Seite" anzeigen zu lassen; auf diese Weise hast Du auch nur einen Submit an den Server.
Gruß, LX
Also ich muss vor und zurück kommen. Kann ja sein das jemand was ändern möchte. Ich brauch also ein
<-- und -->
button.
Von JS lasse ich lieber die Finger so lange es nicht unbedingt sein muss. Habe in den letzten Tagen schon oft genug gezeigt das ich der absolute JS VOLLHORST bin.
Also ich muss vor und zurück kommen. Kann ja sein das jemand was ändern möchte. Ich brauch also ein
<-- und -->
button.
Hast Du ja beide - aber abfragen mußt Du lediglich den <--, weil der --> und die Enter-Taste die gleiche Aktion auslösen sollen
Von JS lasse ich lieber die Finger so lange es nicht unbedingt sein muss. Habe in den letzten Tagen schon oft genug gezeigt das ich der absolute JS VOLLHORST bin.
Für sowas gibt es ja die freundliche Hilfe auf dem Forum. Aber mal im Ernst, wenn Du nicht eine breite Benutzerbasis hast, die JavaScript standardmäßig deaktiviert hat (bspw. Bankmitarbeiter, um XSS-Attacken zu verhindern), kannst Du ruhig einzelne Elemente über ein beherztes document.getElementById('seite1').style.display = "none"; verschwinden und mit document.getElementById('seite1').style.display = "block"; wieder auftauchen lassen. Der onclick-Handler wird in der JavaScript-Abteilung von SelfHTML auch sehr schön erklärt und Du sparst Dir Requests, was für beide Seiten fast immer von Vorteil ist.
Gruß, LX
echo $begrüßung;
Wenn ich ein formular nun mit "Enter" absende habe ich kein
$_POST['back']
$_POST['weiter']
Hat jemand eine Idee wie ich das sonst lösen könnte?
Behandle das Nichtvorhandensein beider Werte als ob 'weiter' gewählt wurde.
Es gibt noch einen weiteren Fallstrick. Der IE sendet beim Ansenden mit Enter kein name-value-Pärchen eines Buttons, weil ja keiner aktiviert wurde. Der FF hingegen nimmt dann einfach den ersten Submit-Button und tut so als ob dieser gedrückt wurde. Wenn also dein erster Submit-Button (in der Reihenfolge im HTML-Code) dein Back-Button ist, "bewegt" man mit Enter im IE vorwärts (wenn du "nichts", wie oben vorgeschlagen, als vorwärts definierst) im FF aber rückwärts. Workaround: Sortiere im HTML-Code den weiter-Button als erstes ein und positioniere die Buttons mit CSS.
echo "$verabschiedung $name";
Danke das hilf mir.
Grüße
Hi dedlfix,
bist du noch da?
Auf Click müssten die Variablen aber doch eigentlich vorhanden sein, oder? Bzw. was könnte der Grund sein, wenn sie es nicht sind? Würd mich sehr interessieren...
Danke
Antipitch
echo $begrüßung;
Auf Click müssten die Variablen aber doch eigentlich vorhanden sein, oder? Bzw. was könnte der Grund sein, wenn sie es nicht sind? Würd mich sehr interessieren...
Variablen sind an der Stelle unwichtig. Die werden erst vom auswertenden Programm aus den Request-Werten gemacht. Hier geht es nur um das unterschiedliche Verhalten der Browser. Wenn man ein Formular per Entertastenbetätigung absendet, dann hat man ja keinen der Submit-Buttons betätigt. Somit kann auch keiner davon ausgelöst worden sein. Es gibt laut HTML-Spezifikation keine Festlegung, was der Default-Button sein soll, der im Enter-Fall als ausgelöst anzusehen ist. Man kann auch keinen Button dazu bestimmen, solch ein Attribut gibt es nicht. Die Windows-GUI (andere sicher auch) jedoch kennt solch eine Möglichkeit, einen Default-Button festzulegen, der dann auch als ausgelöst angesehen wird, doch das ist hier nicht weiter von Belang.
Der IE schließt sich meiner Auffassung an und sendet im Enter-Fall kein name-Value-Pärchen eines Submit-Buttons. Andere Browser sehen das anders und nehmen den ersten des Formulars oder den nächst nachfolgenden Submit-Button vom gerade fokussierten Eingabefeld, den sie als ausgelöst ansehen und senden dessen name-value-Pärchen.
Hinzu kommt noch ein gravierender Fehler im IE < 8 bei <button type=submit> (im Gegensatz zum "normalen" <input type=submit>). Doch den Fall haben wir hier nicht. Bitte bei Interesse selbst recherchieren.
echo "$verabschiedung $name";
Hi dedlfix,
wollt nur wissen, ob auch ein serverseitiger/ PHP Grund denkbar wäre. Schlecht gefragt... Dank dir trotzdem für die gute Erklärung.
Gruß
Antipitch
Hi dedlfix!
Behandle das Nichtvorhandensein beider Werte als ob 'weiter' gewählt wurde.
Es gibt noch einen weiteren Fallstrick. Der IE sendet beim Ansenden mit Enter kein name-value-Pärchen eines Buttons, weil ja keiner aktiviert wurde. Der FF hingegen nimmt dann einfach den ersten Submit-Button und tut so als ob dieser gedrückt wurde. Wenn also dein erster Submit-Button (in der Reihenfolge im HTML-Code) dein Back-Button ist, "bewegt" man mit Enter im IE vorwärts (wenn du "nichts", wie oben vorgeschlagen, als vorwärts definierst) im FF aber rückwärts. Workaround: Sortiere im HTML-Code den weiter-Button als erstes ein und positioniere die Buttons mit CSS.
Da sollte man vorsichtig sein, soweit ich weiß nimmt Opera witzigerweise widerum den letzten Submit-Button. Mit dem Problem durfte ich mich auch schonmal rumschlagen, eine wirklich befriedigende Lösung habe ich nicht gefunden.
mfG
Benjamin