Eddie: Sicherstellen, dass ein sehr grosses Formular komplett ankommt

Hallo allerseits,

ich habe bisher hin und wieder das Problem, dass Besucher ein Formular ausfuellen und losschicken - und zwar, obwohl es bei ihnen noch nicht vollstaendig geladen wurde.

Bspw. also ein Formular der Art:

Name:
   Tel.:
   Nationalität: Deutsch

Bei einer SEHR langsamen Verbindung koennen also die ersten beiden Felder bereits ausgefuellt sein, bevor das Formular vollstaendig geladen ist. Beim Senden kommt also das vorausgefuellte Feld "Nationalität" nicht an - der Browser kennt es ja nicht (genausowenig wie das schliessende </form>-Tag).

Bisher steuere ich dem entgegen, indem ich
a) per JS den Sende-Knopf sofort sperre und ihn erst am Formularende wieder entsperre
b) alle Felder einzeln serverseitig auf Existenz pruefe.

Punkt a) funktioniert aber nicht ohne JS und b) ist sehr aufwendig (aber wegen a auch nicht verzichtbar).

Geht es irgendwie, das einfacher zu machen? Ich habe mir ueberlegt, bspw. ganz am Ende des Formulars ein "hidden"-Feld zu verstecken mit Namen "success".
Und in PHP wuerde ich dann einfach nur
   if (!isset($success))  // natuerlich ueber die POST-Variablen
   {
      // FEHLER
   }
abfragen.

Macht das eurer Meinung nach Sinn? Oder handle ich mir da andere Probleme ein?

Danke für eure Hilfe,
Eddie

--
Old men and far travelers may lie with authority.
  1. ich habe bisher hin und wieder das Problem, dass Besucher ein Formular ausfuellen und losschicken - und zwar, obwohl es bei ihnen noch nicht vollstaendig geladen wurde.

    Wie wärs, wenn du im oberen sichtbaren Teil der Seite etwas baust, was der Benutzer zuerst sieht und wo ein lokaler Link nach unten auf der Seite existiert zum Formular, bzw. unter das Formular. Dieser Anker müßte ja ebenfalls erstmal geladen sein, bevor er funktioniert.

    Benutzt der Benutzer den Link zu früh ist er nicht da. Scrollt er die Seite runter zum Formular hat der Browser mehr Zeit.

    Joe

  2. Hallo allerseits,

    das hatte ich vergessen:
    die Formulare sind sehr gross, und aus diesem Grund gibt es ganz oben und ganz unten jeweils einen Sende-Button. Den oberen sperre ich bisher mit JS, der untere ist unproblematisch, weil er eh erst nach dem Formular kommt.
    Viele Benutzer verwenden den oberen, z.B. wenn es nur um eine kleine Aenderung geht - sie bekommen dann auch garnicht mit, dass das Formular noch laedt...

    Eddie

    --
    Old men and far travelers may lie with authority.
  3. Hallo Eddie

    b) alle Felder einzeln serverseitig auf Existenz pruefe.

    Das solltest du sowieso tun, denn egal was du sonst tust, du kannst nie sicher sein, dass alle Felder übertragen werden. (Es kann ja nicht nur ausschließlich das Originalformular von deiner Seite abgeschickt werden.)

    Geht es irgendwie, das einfacher zu machen?

    Wie wäre es denn, beide Sende-Button im Quelltext am Ende des Formulars anzuordnen und einen per CSS oben zu positionieren?
    Der Anteil der User ohne CSS-Unterstützung dürfte ncoh geringer sein, als der ohne Javascript.

    Auf Wiederlesen
    Detlef

    --
    - Wissen ist gut
    - Können ist besser
    - aber das Beste und Interessanteste ist der Weg dahin!
  4. Hallo Eddie,

    Geht es irgendwie, das einfacher zu machen?

    ja, der Zweck heiligt vielleicht die Mittel:
    Pack das ganze Formular in eine Tabelle und gib den Spalten keine Breitenangaben. Die meisten Browser zeigen die Tabelle und ihren Inhalt erst an, wenn sie komplett übertragen wurde, da erst dann die Spaltenbreiten berechnet werden können.

    So long,
     Martin

    --
    Ich bin im Prüfungsstress, ich darf Scheiße sagen.
      (Hopsel)
  5. Hallo allerseits,

    danke euch, das hat mir alles sehr geholfen!!!

    Eddie

    --
    Old men and far travelers may lie with authority.