Lupinius: Nur einmaliges Abschicken erlauben?

Salve

Mein Problem: Ich habe ein Formular, das beim senden einen JS-Code aufruft. Nun soll das nur einmal möglich sein und erst, wenn der Code ausgeführt wurde (in diesem Fall was mit AJAX).

Mein Ansatz ist das Action-Attribut des Formulars auf eine andere Funktion zu setzen, die dann darauf hinweist, dass man nur eine Zeit gleichzeitig abschicken lassen soll, und damit die Original-Funktion "überschrieben" wird. Allerdings kann man wenn man schnell genug auf Enter drückt wird die Funktion zweimal ausgeführt. Wie lässt sich das verhindern?

--
sh:( fo:| ch:? rl:( br:> n4:? ie:{ mo:) va:) js:| de:> zu:} fl:| ss:) ls:[  
  1. Mein Ansatz ist das Action-Attribut des Formulars auf eine andere Funktion zu setzen, die dann darauf hinweist, dass man nur eine Zeit gleichzeitig abschicken lassen soll, und damit die Original-Funktion "überschrieben" wird. Allerdings kann man wenn man schnell genug auf Enter drückt wird die Funktion zweimal ausgeführt. Wie lässt sich das verhindern?

    Vielleicht gibt es bessere Ergebnisse, wenn deine Function als ersten den submit Button auf dissabled setzt.

    mfg Beat

    --
    ><o(((°>           ><o(((°>
       <°)))o><                     ><o(((°>o
    Der Valigator leibt diese Fische
    1. Salve

      Man könnte immer noch mit Enterbestätigen, leider...
      Die Form hat nichtmal einen Senden Knopf^^

      --
      sh:( fo:| ch:? rl:( br:> n4:? ie:{ mo:) va:) js:| de:> zu:} fl:| ss:) ls:[  
      1. Hi,

        Die Form hat nichtmal einen Senden Knopf^^

        ;-)

        Es gibt unzählige Ansätze dafür. Aber dazu müsste man wissen, was du genau vorhast. Ist das eine reine Ajax Anwendung oder ist dahinter eine Anwendung, welche die gesendeten Ergbnisse speichern soll?

        Mike

        1. Salve

          Die Seite ist so etwas wie eine Konsole - ein Befehl wird eingegeben und dieser Befehl wird per AJAX an ein PHP Skript geleitet. Dieses wertet den Befehl aus und gibt eine Ausgabe zurück.

          Hoffe das hilft.

          --
          sh:( fo:| ch:? rl:( br:> n4:? ie:{ mo:) va:) js:| de:> zu:} fl:| ss:) ls:[  
          1. Hi,

            ok das hört sich also eher nach eienr Art Adminfunktion an. Also dürfte der Sicherheitsaspekt schon vorher ausreichend überprüft sein?

            Dann übergebe doch mit dem Formula noch eine eindeutige IDnummer, die dein PHP Script prüft ob schon mal benutzt.

            Mike

            1. Salve

              Bei der ID-Sache gäbe es allerdings ein weiteres Problem: Nach dem ein Befehl ausgeführt wurde wird die Konsole wieder freigeschaltet. Trotzdem vielen Dank für den Vorschlag.

              Ich nehme mal an alle weitere Lösungen würden sehr kompliziert werden - und so sicher brauche ich es dann doch nicht ;P

              Nochmals Danke!

              --
              sh:( fo:| ch:? rl:( br:> n4:? ie:{ mo:) va:) js:| de:> zu:} fl:| ss:) ls:[  
              1. Hi,

                Bei der ID-Sache gäbe es allerdings ein weiteres Problem: Nach dem ein Befehl ausgeführt wurde wird die Konsole wieder freigeschaltet. Trotzdem vielen Dank für den Vorschlag.

                und? Die "Konsole" kann doch wieder freigeschaltet werden nur eben mit einer neuen ID. Oder meinst du die Konsole darf danach nicht wieder freigeschaltet sein?

                Ich nehme mal an alle weitere Lösungen würden sehr kompliziert werden - und so sicher brauche ich es dann doch nicht ;P

                Das ist nichts kompliziertes dran und diesen Vorgang wirst du noch oft benötigen, also sollte dich eine Lösung weiterhin brennend interessieren.

                Mike

                1. Salve

                  Ich hatte dich wohl falsch verstanden ;P
                  Die ID Sache ist eigentlich gut, das werde ich wohl auch probieren. Obwohl es (eigentlich) reicht wenn das ganze nicht sicher sondern nur idiotensicher ist. Den eigentlichen Schaden beim Doppelsenden trägt hier nämlich der User.

                  Trotzdem werde ich das mal testen. Danke auch dir nochmal.

                  --
                  sh:( fo:| ch:? rl:( br:> n4:? ie:{ mo:) va:) js:| de:> zu:} fl:| ss:) ls:[  
            2. Hi,

              Dann übergebe doch mit dem Formula noch eine eindeutige IDnummer, die dein PHP Script prüft ob schon mal benutzt.

              Diese ID müsste man aber dann wenn der AJAX-Request fertig ist eins hochzählen. Und man müsste das PHP-Script extra umbauen.
              Vielleicht wäre es schöner, eine Flag-Variable zu verwenden, die man beim Absenden des Formulars auf false setzt und erst wenn der Request fertig ist wieder auf true setzt. Vor dem Absenden muss man dann jedesmal abprüfen, ob die Variable auf true ist. Wenn dies nicht der Fall ist soll einfach nichts passieren, bzw. irgend eine Anzeige mit "please wait" eingeblendet werden.

              mfG,
              steckl

              1. Salve

                Das funktioniert wirklich schneller so, selbst ein Programm das auf die Enter-Taste hämmert kann nicht 2mal senden.

                DANKE!

                --
                sh:( fo:| ch:? rl:( br:> n4:? ie:{ mo:) va:) js:| de:> zu:} fl:| ss:) ls:[