Submit-Button via JS deaktivieren
Stephan
- javascript
-2 Hans-Dieter Schnittlauch0 Ashura0 Gernot Back
Hallo,
ich habe vor, einen submit-button via JS zu deaktivieren. Allerdings klappt dies nicht, woran es liegt, habe ich nicht rausfinden können.
Der HTML-Code dazu:
<input type="SUBMIT" value="absenden" name="SUBMIT2" id="SUBMIT2" class=blocktitel>
Der Javascript-Code hierzu:
document.getElementById("SUBMIT2").disabled = true;
Jemand eine idee ? Langsam werde ich nämlich bekloppt darüber.
Danke,
Stephan
Ey Alter, ist das echt Dein Name??
Ey Alter, ist das echt Dein Name??
ja, warum nicht ?
Voll krass auszusprechen oder nicht?
Hallo Stephan.
Der HTML-Code dazu:
<input type="SUBMIT" value="absenden" name="SUBMIT2" id="SUBMIT2" class=blocktitel>
Der Javascript-Code hierzu:
document.getElementById("SUBMIT2").disabled = true;
Was sagt Folgendes?
alert(document.getElementById("SUBMIT2").disabled);
Und warum verwendest du this nicht?
Einen schönen Sonntag noch.
Gruß, Ash*feel free*ura
Hallo Stephan,
Der Javascript-Code hierzu:
document.getElementById("SUBMIT2").disabled = true;
Jemand eine idee ? Langsam werde ich nämlich bekloppt darüber.
Ich halte es grundsätzlich für geschickter, Formular-Elemente über das Forms- und seine Unter- und Unterunterobjekte zu manipulieren statt über irgendwelche getElement-Methoden.
Geht doch dann ganz einfach:
<input type="checkbox" onclick="[code lang=javascript]with(this.form.submit2)if(disabled)disabled=false;else disabled=true;
~~~">
<input type="submit" name="submit2" value="abschicken" disabled>[/code]
Es sollte aber auch so gehen, wie du es planst, vorausgesetzt, du hast deinem Submit-Button auch eine entsprechende ID verpasst und nicht nur ein Name-Attribut mit dem Wert "SUBMIT2".
Gruß Gernot
Geht doch dann ganz einfach:
with(this.form.submit2)if(disabled)disabled=false;else disabled=true;
Ließe sich noch weiter verkürzen:
with (this.form.submit2) disabled = !disabled;
Allerdings für Gelegenheitsscripter unlesbar... ;) Ähnlich e = e || window.event, Literale und was es sonst noch für Abkürzungsmöglichkeiten gibt.
Mathias
Hallo Mathias,
Ließe sich noch weiter verkürzen:
with (this.form.submit2) disabled = !disabled;
Sehr elegant! das kannte ich auch noch nicht.
Ich glaube ja, Stephan will letztlich auf etwas geringfügig Komplizierteres hinaus, wahrscheinlich sogar mit mehreren Submitbuttons in einem Formular, von denen immer nur höchstens einer enabled sein soll. Das geht aber ggf. auch recht schlank:
<script type="text/javascript">
[code lang=javascript]
function choose (obj) {
with(obj.form)
for (i=1; i<elements.length; i+=2) {
elements[i].disabled=true;
}
obj.form[obj.value].disabled=false;
}
</script>
<form action="" method="get">
<input value="submit1" name="eithor" type="radio" onclick="choose(this)
">
<input type="submit" onclick="form.action='haveCake.html'
" name="submit1" value="have the cake" disabled>
<br><br>
<input value="submit2" name="eithor" type="radio" onclick="choose(this)
">
<input type="submit" onclick="form.action='eatCake.html'
" name="submit2" value="eat the cake" disabled>
</form>
[/code]
Gruß Gernot
with (this.form.submit2) disabled = !disabled;
Allerdings für Gelegenheitsscripter unlesbar... ;)
Mathias,
Finde ich in diesem Fall nicht. Das ist ja keine kryptische Verkürzung, sondern einfacherer Code.
Ähnlich e = e || window.event,
Hier sieht’s schon anders aus.
Na zumindest hatte Gernot nicht if(disabled == true)
geschrieben. ;-)
Live long and prosper,
Gunnar
Ich halte es grundsätzlich für geschickter, Formular-Elemente über das Forms- und seine Unter- und Unterunterobjekte zu manipulieren statt über irgendwelche getElement-Methoden.
warum hälst du das für geschickter ?
Es sollte aber auch so gehen, wie du es planst, vorausgesetzt, du hast deinem Submit-Button auch eine entsprechende ID verpasst und nicht nur ein Name-Attribut mit dem Wert "SUBMIT2".
ID ist natürlich vergeben. Lasse ich mir der Status von "disabled" ausgeben, ändert sich dieser auch, allerdings bleibt der Button weiterhin klickbar, was ich wirklich nicht verstehe.
Grüsse,
Stephan
Hallo Stephan,
warum hälst du das für geschickter ?
Wenn du document.getElementById() benutzt, schickst du deinen Browser "über Japan nach Schlesien", erst hinaus aus deinem Formelement hinauf bis ganz nach oben ins Document-Element, um dann wieder in just demselben Formelement zu landen, das du verändern willst.
Damit sich dein armer Rechner überhaupt zurechtfindet und die Orientierung nicht verliert, musst du entsprechende IDs vergeben, die du dann als Parameter bei Funktionsaufrufen übergibst. Du musst als Programmierer höllisch aufpassen, dass die Parameter und die IDs übereinstimmen. Ich glaube sogar, dass genau das dein aktuelles Problem ist.
Wenn du dein Formular aus einem seiner Elemente heraus über dessen Eigenschaft [linkhttp://de.selfhtml.org/javascript/objekte/elements.htm#form@title=form] ansprichst, brauchst du keine ID, ja brauchst für dein Formular noch nicht einmal einen Namen und übergibst ggf. immer nur this als Parameter. Der Funktion ist dann automatisch klar, worauf sie sich beziehen soll und sie muss keine Umwege über das document-Objekt gehen. Deinem Rechner ersparst du damit wahrscheinlich einige Operationen, auch wenn du den Geschwindigkeitsunterschied als Nutzer nicht bemerkst.
Davon abgesehen kommen mit dem Forms-Objekt auch ältere Browser klar, die document.getElementByIrgendwas() noch nicht verstehen.
ID ist natürlich vergeben. Lasse ich mir der Status von "disabled" ausgeben, ändert sich dieser auch, allerdings bleibt der Button weiterhin klickbar, was ich wirklich nicht verstehe.
Da musst du irgendeinen Flüchtigkeitsfehler gemacht haben, aber den können wir ggf. natürlich auch nur anhand deines Codes sehen.
Möglicherweise hast du ja eine XHTML-Datei und die zugewiesene Eigenschaft des Attributs "disabled" darf nicht "true", sondern muss ihrerseits auch "disabled" heißen, keine Ahnung ob das da möglicherweise auch Auswirkungen auf JS hat.
Gruß Gernot
Hallo nochmal,
Möglicherweise hast du ja eine XHTML-Datei und die zugewiesene Eigenschaft des Attributs "disabled" darf nicht "true", sondern muss ihrerseits auch "disabled" heißen, keine Ahnung ob das da möglicherweise auch Auswirkungen auf JS hat.
Habe das gerade mal getestet: Es bleibt auch bei XHTML bei true und false, obwohl "disabled" als zugewiesener Wert natürlich auch nicht schadet, da eine nicht-leere Zeichenkette natürlich auch true entspricht.
Gruß Gernot