Frank Scholz: Position nach Submit merken

Hallo Forum,

ich habe ein ziemlich langes HTML-Form gebastelt. Es ist eine Kalkulation, ähnlich einem Excel-Sheet. Wenn der Submit-Button betätigt oder Enter gedrückt wird, werden die Benutzer-Eingaben mit PHP durchkalkuliert, und die Seite wird neu ausgegeben. Mein Problem: man steht dann wieder ganz am Anfang der Seite und muss erst wieder zu der Position scrollen, an der man stand, als der Submit ausgelöst wurde.

Wie kann ich mir die Cursor-Position bzw. das Eingabefeld zum Submit-Zeitpunkt merken und nach der Neu-Ausgabe der Seite wieder herstellen?

Danke für Eure Hilfe.

--
BFN
Frank

  1. Hallo,

    Du solltest Deinem Formular zwei Input Hidden Felder hinzufügen in denen Du per Javascript die Werte aus window.pageXOffset und window.pageYOffset beim Absenden der Seite einträgst. Im onload Event des body-Tags prüfst Du nun ob die Werte der Hiddenfelder gesetzt sind und verschiebst die Scrollbars mit window.ScrollBy() oder window.ScrollTo() entsprechend.

    Du solltest also keinen Submit Button mehr verwenden sondern einen Button, der auf das Event onclick reagiert und das Formular dann absendet.

    Gruß

    Slaughter

    1. Hi,

      Du solltest also keinen Submit Button mehr verwenden sondern einen Button, der auf das Event onclick reagiert und das Formular dann absendet.

      nein, das wäre "böse", weil man dann Benutzer ohne Javascript vollständig aussperrt.

      Stattdessen würde ich eher empfehlen, was Maxx schon vorgeschlagen hat. Man hängt der URL, die als action-Attribut des Formulars steht, einfach einen Anker an. Falls man mehrere Submit-Buttons an unterschiedlichen Stellen im Formular hat, würde ich diesen Anker nicht statisch setzen, sondern vor dem Absenden des Formulars (onsubmit) per JS.

      Ergebnis: Javascript-Abstinenzler können das Formular immerhin nutzen und absenden, landen aber nach dem Absenden immer am Dokumentanfang (so wie bisher). Benutzer, die Javascript gut finden, kommen in den Genuss, stets wieder an der Stelle zu landen, wo sie geklickt haben.

      Ciao,
       Martin

      --
      Der Gast geht solange zum Tresen, bis er bricht.
  2. Hallo Frank,

    Wie kann ich mir die Cursor-Position bzw. das Eingabefeld zum Submit-Zeitpunkt merken und nach der Neu-Ausgabe der Seite wieder herstellen?

    wäre es nicht am einfachsten in die Nähe des Submit-Buttons einen Anker zu setzen? <form action="seite.php#anker" method=...>
    Zumindest ist dann nach dem Submit der Anker im Viewport. Und wenn die Seite nicht gerade mit "Return" abgeschickt wurde passt das annähernd.

    HTH

    Jochen

    --
    Kritzeln statt texten: Scribbleboard
  3. Wie kann ich mir die Cursor-Position bzw. das Eingabefeld zum Submit-Zeitpunkt merken und nach der Neu-Ausgabe der Seite wieder herstellen?

    Das ist leider in diesem Fall nur mit Javascript Punktgenau möglich.
    Dazu müsste es bei jedem <input> onblur das zuletzt bearbetete Feld merken (dessen notwendige id), um dann bei onsubmit ein Fragment an das action Attribut zu setzen.

    mfg Beat

    --
    Woran ich arbeite:
    X-Torah
    ><o(((°>           ><o(((°>
       <°)))o><                     ><o(((°>o