2017-04-28 6 views
0

Ich versuche, Funktion onload="submit()" auf meinem Formular zu verwenden, aber wenn die Seite geladen wird, tut es es mehrmals. Das Ergebnis ist da, aber wie kann ich die Schleife stoppen? Wie kann ich es nur einmal benutzen? Hier ist mein Code:Vermeiden Sie mehrere Onload senden

<script type="text/javascript"> 
    function submit() { 
    if (!sessionStorage.getItem("submitted")) { 
     sessionStorage.setItem("submitted", "true"); 
     document.post.submit(); 
    } 
} 
    </script> 

    <body onload="submit()"> 
     <form method="post" id="post" name="post"> 
       //stuff here 
      <input id="submit" type="submit" value="Valider" name="test" class="submit"> 
     </form> 

Gibt es irgendetwas, was ich falsch mache? Oder gibt es einen besseren Weg, es zu machen?

Vielen Dank für Ihre Zeit und Hilfe!

+0

Ist es schleifen? Übermitteln lädt die Seite neu, wodurch die Onload-Funktion wieder gestartet wird? –

+0

Ja, es ist Schleife von selbst, auf der ersten Seite laden. –

+0

Was erwartest du zu passieren? 'onload' ist eine Funktion, die beim Laden der Seite ausgeführt wird. Es sendet das Formular, das die Seite neu lädt, die dann die Onload-Funktion erneut ausführt. – Barmar

Antwort

2

Verwenden Sie sessionStorage, um sich zu erinnern, wenn Sie das Formular bereits abgeschickt haben, damit Sie es nicht erneut tun.

function submit() { 
    if (!sessionStorage.getItem("submitted")) { 
     console.log("submitting"); 
     sessionStorage.setItem("submitted", "true"); 
     document.getElementById("post").submit(); 
    } else { 
     console.log("already submitted, not repeating"); 
     sessionStorage.removeItem("submitted"); 
    } 
} 

Auch, name="submit" und id="submit" nicht für den Absenden-Button verwenden. Siehe "Submit is not a function" error in JavaScript

+0

Also muss ich nur die andere Funktion ersetzen? Das Formular wird nicht gesendet. –

+0

Ändern Sie den Namen der Übermittlungsschaltfläche. – Barmar

+0

Ich habe geändert, was Sie mir gesagt haben, Sie können auf meinem ersten Beitrag sehen, und es nicht mehr Schleife, aber sendet nicht mein Formular –

Verwandte Themen