Supportnet / Forum / Skripte(PHP,ASP,Perl...)
Button erst inaktiv, dann aktiv
Frage
Hallo allerseits,
wollt ma fragen, wie ich es machen kann, dass der ein bestimmter button für beispielsweise 10 Sekunden inaktiv ist und dann erst aktiv wird. Habe folgendes versucht, aber funzt net:
<script language="javascript">
<!--
var secs = 10;
var wait = secs * 1000;
document.sform.submitbtn.disabled=true;
for(i=1;i<=secs;i++) {
window.setTimeout("update(" + i + ")", i * 1000);
}
window.setTimeout("timer()", wait);
function update(num) {
if(num == (wait/1000)) {
document.sform.submitbtn.value = "Senden";
}
else {
printnr = (wait/1000)-num;
document.sform.submitbtn.value = "Senden (" + printnr + ")";
}
}
function timer() {
document.sform.submitbtn.disabled=false;
}
//-->
</script>
Über Antworten wär ich sehr dankbar,
Gruß,
Üsch
Antwort 1 von rabies
Ich sehe da kein Problem.
Du hast das Script bestimmt im Header des Quelltextes (<head>) stehen, richtig? Das Problem ist, so denke ich mir, dass zum Zeitpunkt, an dem der Submitbutton auf disabled gesetzt werden soll, der Parser des Browsers das Element 'submitbtn' noch gar nicht kennt.
Der ganze Scriptblock sollte sich nach Deinen Wünschen verhalten, wenn Du Ihn unterhalb des Formulars setzt.
--rabies.
Du hast das Script bestimmt im Header des Quelltextes (<head>) stehen, richtig? Das Problem ist, so denke ich mir, dass zum Zeitpunkt, an dem der Submitbutton auf disabled gesetzt werden soll, der Parser des Browsers das Element 'submitbtn' noch gar nicht kennt.
Der ganze Scriptblock sollte sich nach Deinen Wünschen verhalten, wenn Du Ihn unterhalb des Formulars setzt.
--rabies.
Antwort 2 von Uesch
Hmmm,
hab alles gemacht wie dus gesagt hast. Wie muss denn der "Senden-Button" heißen? Denn er heißt jetzt standardmäßig SubmitButtonName.
hab alles gemacht wie dus gesagt hast. Wie muss denn der "Senden-Button" heißen? Denn er heißt jetzt standardmäßig SubmitButtonName.
Antwort 3 von rabies
Du sprichst Ihn doch oben schon mit
--rabies.
document.sform.submitbtn an. Demnach heißt der Submitbutton submitbtn (sprich, dass Attribut name= muss im input-Feld den Wert submitbtn haben)--rabies.
Antwort 4 von rfb
Zitat:
Der ganze Scriptblock sollte sich nach Deinen Wünschen verhalten, wenn Du Ihn unterhalb des Formulars setzt.
ts ts ts.Der ganze Scriptblock sollte sich nach Deinen Wünschen verhalten, wenn Du Ihn unterhalb des Formulars setzt.
Für sowas gibts doch den onload-Event, solcher Pfusch ist nicht nötig. Das Script ist eh schon problematisch durch die Nutzung globaler Variablen.
Aber zur Frage: so ganz ist mir nicht klar was diese Kaskade von Timeouts bewirken soll.
Um den Button einmalig erst nach 10s zu aktivieren würde ja ein
window.setTimeout reichen. Wozu soll diese Vielfalt dienen?Antwort 5 von rabies
Zitat:
ts ts ts.
Ja, ich weiß. Nicht schön. Aber dafür selten. Und es erfüllte den Zweck. ts ts ts.
Asche auf mein Haupt. :D
Antwort 6 von Uesch
Kannst du mir sagen wie man ein window.setTimeout macht?
Gruß
,
Üsch
Gruß
,
Üsch
Antwort 7 von rfb
Der Sinn dieser Frage entzieht sich mir. Du verwendest in deinem Script diese Methode 11 mal!
Antwort 8 von rfb
nett wie ich bin kann ich dir ja mal schreiben wie ich dein geschildertes Problem lösen würde, wobei ich den Sinn deiner setTimeout-Kaskade aber immer noch nicht verstehe:
kurz, knapp, keine globalen Variablen, keine Scriptbereiche im body, Sicherheitsabfragen
<script type="text/javascript">
function aendere_status(wie) {
var wo=document.sform.submitbtn;
if (wo) wo.disabled=wie;
}
window.onload=function () {
aendere_status(false);
window.setTimeout("aendere_status(true)",10000);
}
</script>kurz, knapp, keine globalen Variablen, keine Scriptbereiche im body, Sicherheitsabfragen
Antwort 9 von rfb
oops, sorry, doppelte Verneinung übersehen, also
...
...
...
aendere_status(true);
window.setTimeout("aendere_status(false)",10000);...
Antwort 10 von Uesch
ok, danke!

