Wie kann ich die vorübergehend deaktivieren einen submit-button für 3 Sekunden ("onsubmit"), dann wieder aktivieren?
Ich bin relativ neu mit javascript und hier ist was ich habe, so weit:
<!-- this is to disable the submit button and then re-enable it after 3 sec -->
<script type="text/javascript">
function enable()
{
var x = document.LAYOUTFORM.getElementById("create_button");
setTimeout(x.removeAttribute("disabled"), 3000);
}
</script>
Und für die Schaltfläche habe ich dieses:
<INPUT TYPE="SUBMIT" VALUE=" Create PDF " class="FORMBUTTON" ID="create_button" onclick="javascript:this.disabled=true;javascript:enable();">
Habe ich Durcheinander gebracht, dies für Stunden und die meisten von Euch werden es anschauen und wissen, was falsch ist, sofort. Meine Formular-ID und der name ist LAYOUTFORM. Kann mir jemand sagen was mache ich hier falsch?
Für bonus-Punkte würde ich auch gerne den text der Schaltfläche ändern Sie vorübergehend auf "Erstellen...", während es deaktiviert ist, und dann zurück zum Erstellen von PDF-wieder.
- setTimeout
- Das ist eine schöne Idee! Danke.
- AmazingChase bitte akzeptieren Sie die Antwort.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einfachste Weg:
In Ihrem javascript:
Drop die LAYOUTFORM zwischen Dokument und getElementById.
Nur ein fyi, mit firebug, chrome developer tools, oder wie auch immer die entsprechenden Werkzeuge sind für den IE, Sie können Affen mit Ihren javascript-Code auf der Konsole. Console.log wird die Ausgabe von text und sogar Objekte (CDT), die Sie überprüfen können. Sehr nützlich für die Erkundung 🙂
Mehrere Probleme. Ersten, Sie in das onclick-Attribut mit javascript: Sie ist für die URLs. Sachen im onclick-Attribut ist bereits ausgewertet, als code. Zweitens ist der code in Ihrem setTimeout sollte entweder string oder name einer Funktion. Sie sollten tun, so etwas wie dieses:
HTML:
JavaScript:
Können Sie auf die Schaltfläche entweder durch
id
dass weltweit einzigartig istoder durch die
name
einzigartig in der umschließenden formAlso muss man entweder
oder
(Vorausgesetzt, create_button_name ist der name der Schaltfläche:
)
Der erste parameter von setTimeout sollte eine Funktion sein:
BTW, HTML-müssen nicht (und sollten es auch nicht sein, für die Lesbarkeit, etc.) in Großbuchstaben.
Gibt es zwei wesentliche Probleme mit Ihrem JavaScript:
Den
.getElementById()
- Methode gehört zudocument
, nicht auf das Formular (oder andere) element.setTimeout()
erwartet, dass der erste parameter eine Funktion (oder ein string, aber es gibt fast nie eine situation, bei der Verwendung einer Zeichenfolge angebracht ist).Versuchen Sie dies:
Können Sie kombinieren gerne das deaktivieren und wieder aktivieren in einer einzigen Funktion:
Beachten Sie, dass Sie brauchen nicht zu verwenden
.removeAttribute()
sind, können Sie einfach legen Sie die.disabled
Eigenschaft direkt (wie Sie bereits getan, wenn Sie deaktiviert das element).EDIT: Gerade gesehen, die "bonus-Punkte" - Teil deiner Frage. Sie müssen nur legen Sie die
.value
Eigenschaft:http://www.webdeveloper.com/forum/showthread.php?164239-Temporarily-Disable-Submit-Button