Alle Felder nach dem Senden sperren/deaktivieren

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Alle Felder nach dem Senden sperren/deaktivieren

    Hallo Ihr Lieben,

    ich versuche schon seit langem mit JavaScript alle Formularelement zu deaktivieren, nachdem der Benutzer auf Senden gedrückt hat. Leider hat das bis heute noch nicht funktioniert und bitte nun hier einmal um Hilfe. Was mache ich an diesem Script bitte falsch?

    PHP-Quellcode

    1. <?php
    2. if(isset($_POST['send']))
    3. {
    4. echo 'Sie haben '.$_POST['meinFeld'].' eingegeben';
    5. }
    6. ?>
    7. <!DOCTYPE HTML>
    8. <html>
    9. <head>
    10. <meta charset="utf-8">
    11. <title>Test-Formular</title>
    12. <script type="text/javascript">
    13. function disable()
    14. {
    15. for(i = 0; i < document.formular.elements.length; i++)
    16. {
    17. document.formular.elements[i].disabled = 'true';
    18. }
    19. }
    20. </script>
    21. </head>
    22. <body>
    23. <form action="test.php" method="post" name="formular" onSubmit="disable(); return false;">
    24. <input type="text" name="meinFeld" /><br />
    25. <input type="submit" name="send" />
    26. </form>
    Alles anzeigen


    Ist jetzt nur ein Beispiel-Code der schon nicht funktioniert. Wenn ich return false herausnehme, passiert nichts. Er lädt die Seite nur neu. Wenn ich hingegen das komplette onSubmit herausnehme, funktioniert das ganze Script wieder.

    Ich möchte halt nur, dass alle Felder in einem Formular nach dem Klick auf Senden disabeld werden.

    Ich danke im Voraus!
  • Internet Explorer 9 nutze ich. Im Firefox klappt es bei mir aber auch nicht. Er deaktiviert die Felder zwar, aber leitet die Formulareingaben nicht weiter. Wenn ich in das Eingabefeld test eingebe und Senden drücke, sollte er mir oben drüber wieder test ausgeben. Passiert aber leider nicht.
  • ich kann mir nur vorstellen das, dass mit dem onsubmit nicht geht.

    bei allen anderen Funktionen schon, der disabeld die feld ja bevor der submit die Seite einmal weite leitet also sind die Felde wieder beschreibbar, warum der Inhalt aber nicht weiter gesendet wird versteh ich jetzt noch nicht, werde aber zuhause nochmal drauf gucken wenn es bis dahin nicht schon jemand gelöst hat ^^

    AHHH:
    Gerade gefunden:
    the user cannot use the field in any way, not to highlight the text for copying, not to select the checkbox, not to submit the form. In fact, a disabled field is not even sent if the form is submitted. <--- mach jetzt auch sind die Felder werden nähmlich schon vorher disabled ^^
  • oO hä... Also mit onSubmit geht das gar nicht oder wie?

    Womit denn dann? Mir würde es ja auch reichen, wenn nur der Submit-Button deaktiviert werden würde. Das Problem ist nämlich folgendes:
    Die Benutzer können etwas auf meiner Website hochladen, klicken dann aber mitten im Upload nochmal auf Senden, da es ihnen nicht schnell genug geht. (verständlich bei 25MB, dass es nicht in 2 Sekunden fertig ist :D) Deshalb würde ich gern den Button oder alles deaktivieren. Aber nichts funktioniert wirklich. Am besten wäre es natürlich, wenn der Button deaktiviert wird und der Text darauf dann in Bitte warten... geändert werden würde. Aber das wäre mir erstmal unwichtig.

    Das Problem ist immer und immer wieder => Die Daten werden nicht abgeschickt. Habe schon so viele Scripts bei Google gefunden und nichts klappt...
  • Vielleicht die Javascript einfach in der php if abfrage aufrufen.

    Quellcode

    1. echo '<script type="text/javascript">disable();</script>';

    (nicht getestet)

    Aber wenn du so große Datein hochläds mit einem php dann wird die doch solange Blockiert bis die Datei fertig ist oder? (noch nie sowas programmiert)
  • Hey,

    erstmal danke für deine Hilfe!
    Die Idee finde ich auch gut, leider auch keinen Erfolg. Mir ist aber gerade eine andere Möglichkeit eingefallen, die zwar sehr umständlich ist aber läuft. Ich frage mich, warum funktioniert das aber mein anderer Code nicht. Folgendes habe ich nun gemacht:

    Quellcode

    1. <script type="text/javascript">
    2. function disable()
    3. {
    4. document.getElementById('file1').style.display='none';
    5. document.getElementById('file2').style.display='block';
    6. }
    7. </script>


    Das ist mein Javascript-Code. Dann habe ich zwei Button erstellt, die wie folgt aussehen:

    Quellcode

    1. <div id="file1"><input type="submit" name="submit" value="hochladen" /></div> <div id="file2" style="display: none;"><input type="submit" value="Bitte warten..." disabled="disabled" /></div>


    Das funktioniert nun perfekt. Ich habe also einen normalen Button und einen anderen, der disabled ist und mit display-none ausgeblendet wird. Nach dem Klick auf hochladen wird der Button ausgeblendet und der disabled-Button dafür eingeblendet.

    Wo ist denn da nun der Unterschied? Das kann doch nicht sein, dass das funktioniert und das Andere nicht... Im Form-Element steht ganz normal das von vorher: onSubmit="disable();"
  • Unvorstellbar, aber ich habe es nun geschafft. Hier mein Lösungsweg:

    JavaScript

    Quellcode

    1. <script type="text/javascript">
    2. function DisableForm(formname)
    3. {
    4. var forms = document.forms[formname];
    5. for(var i=0; i < forms.elements.length; i++)
    6. {
    7. forms.elements[i].disabled = true;
    8. }
    9. return true;
    10. }
    11. </script>
    Alles anzeigen


    Und im Formtag habe ich dann das hier alles stehen:

    Quellcode

    1. name="formular" onsubmit="window.setTimeout('DisableForm(\''+this.name+'\');', 1); return true;"


    Das deaktiviert mir alle Felder wunderbar!

    Ich danke dir für deine Hilfe, Helvete! :)