Michael: disable button wird zu spät ausgeführt

Hallo alle,

in einem umfangreichen Formular wird der Submit-Button nach Drücken auf disabled gesetzt, um zu verhindern dass der user während des Prüfens der Eingaben ein zweites Mal drückt. Aber der Befehl wird dummerweise erst NACH Ausführen der Prüfung ausgeführt, was ja nicht Sinn der Sache ist. Wie erzwinge ich, dass er vor der Prüfung ausgeführt wird? Danke

Hier der Teilcode:

function eingabecheck()
 {
  document.form1.Submit.disabled=true;
  document.form1.Submit.value="Bitte warten...";
  for (n=1; n<=nItems; n++)
   {
    a=(n-1)*6;
    check=0;

/* REAL */
    for (i=0; i<=5; i++)
     {element="R"+n;
     if (document.form1.elements[element][i].checked==true)
     {check=1;}

etc.....

  1. Hallo Michael,

    in einem umfangreichen Formular wird der Submit-Button nach Drücken auf disabled gesetzt, um zu verhindern dass der user während des Prüfens der Eingaben ein zweites Mal drückt. Aber der Befehl wird dummerweise erst NACH Ausführen der Prüfung ausgeführt, was ja nicht Sinn der Sache ist. Wie erzwinge ich, dass er vor der Prüfung ausgeführt wird?

    Die einzige Möglichkeit, die ich sehe, ist dass der Submit-Button auf disabled gesetzt wird und daraufhin ein setTimeout mit der eigentlichen Funktion und einer Verzögerung von 0 (sprich: Null) Sekunden erfolgt. So hat der Browser Gelegenheit, die Anzeige zu aktualisieren.

    Ich gebe allerdings noch zu bedenken, dass ein Submitbutton nicht die einzige Möglichkeit ist, ein Formular abzuschicken; daher wäre es zwar theoretisch sinnvoll, zusätzlich noch irgend eine globale Variable zu setzen, die bei onsubmit geprüft wird, allerdings bringt das nichts, da durch den Wiederholten Submit der erste verloren geht, egal, was die Überprüfung ergibt. Du könntest höchstens noch eine zweite globale Variable setzen, falls die erste beim onsubmit bereits gesetzt ist.

    Es kommt natürlich auf Länge des Formulars an, aber wäre es nicht am allersinnvollsten, die Überprüfungsroutine zu optimieren, dass sie eben nicht mehr so viel Zeit in Anspruch nimmt?

    Viele Grüße,
    Christian