Button erst inaktiv, dann aktiv
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 schreiben
Antwort 1 von rabies vom 14.02.2019, 16:57 Options
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.
Antwort 2 von Uesch vom 14.02.2019, 17:10 Options
Hmmm,
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 vom 14.02.2019, 17:19 Options
Du sprichst Ihn doch oben schon mit
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 vom 14.02.2019, 17:38 Options
Zitat:
Der ganze Scriptblock sollte sich nach Deinen Wünschen verhalten, wenn Du Ihn unterhalb des Formulars setzt.
ts ts ts.
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 vom 14.02.2019, 17:45 Options
Zitat:
ts ts ts.
Ja, ich weiß. Nicht schön. Aber dafür selten. Und es erfüllte den Zweck.
Asche auf mein Haupt. :D
Antwort 6 von Uesch vom 14.02.2019, 18:38 Options
Kannst du mir sagen wie man ein window.setTimeout macht?
Gruß
,
Üsch
Antwort 7 von rfb vom 14.02.2019, 21:48 Options
Der Sinn dieser Frage entzieht sich mir. Du verwendest in deinem Script diese Methode 11 mal!
Antwort 8 von rfb vom 15.02.2019, 13:03 Options
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:
<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 vom 15.02.2019, 13:10 Options
oops, sorry, doppelte Verneinung übersehen, also
...
aendere_status([b]true[/b]);
window.setTimeout("aendere_status([b]false[/b])",10000);
...
Antwort 10 von Uesch vom 23.02.2019, 17:30 Options
ok, danke!