submit button disablen
jaap
- javascript
0 Alexander Foken0 jaap0 Alexander Foken
hi, ich bastle grad ein forum, und ich muss da ein submit button disablen nachdem er geklickt wurde, da sonst alles durcheinander kommt fals man 2x klickt.
ich hab das jetz so gemacht:
<input type="submit" value="Absenden" onclick="document.topicform.submitbutton.disabled=true" name="submitbutton">
aber dann ist das teil disabled, aber es wird nicht witergeleitet um die eingabe zu verarbeiten... warum nicht?
Moin Moin !
da sonst alles durcheinander kommt fals man 2x klickt.
Spricht für Probleme auf der Serverseite. Sowas kann man abfangen. Beweis: Dieses Forum. Ansatz: Ins formular eine (wie auch immer geartete) eindeutige Nummer einbauen, die beim Absenden auf dem Server nur einmal akzeptiert wird.
Laß den Javascript-Pfusch, Du hast über den Client keine Kontrolle.
Alexander
Moin Moin !
da sonst alles durcheinander kommt fals man 2x klickt.
Spricht für Probleme auf der Serverseite. Sowas kann man abfangen. Beweis: Dieses Forum. Ansatz: Ins formular eine (wie auch immer geartete) eindeutige Nummer einbauen, die beim Absenden auf dem Server nur einmal akzeptiert wird.
Laß den Javascript-Pfusch, Du hast über den Client keine Kontrolle.
Alexander
find ich aber besser so zu machen.
wie meinst du das mit keine controlle?
Moin Moin !
Laß den Javascript-Pfusch, Du hast über den Client keine Kontrolle.
find ich aber besser so zu machen.
wie meinst du das mit keine controlle?
Wie willst Du mich daran hindern, Javascript abzuschalten?
Wie willst Du mich daran hindern, dein Formular zu kopieren und mit absichtlich falschen Werten mehrfach an Deine Applikation zu schicken?
Wie willst Du mich daran hindern, noch bösere Sachen anzustellen?
Es geht nicht, die Kontrolle über den Browser hat der Surfer, nicht Du. Und das ist auch gut so. Deswegen MUSST Du auf dem Server die übergebenen Werte prüfen.
Du kannst Dir die Arbeit machen, auf dem Client zusätzlich zu überprüfen, ob die Werte ok sind, und so den User schneller als mit einem HTTP-Request-Response-Vorgang über die fehlerhafte Eingabe informieren. Das ist aber reiner Luxus.
Den Rest dieser Diskussion findest Du mehrfach im Archiv.
Alexander
Moin Moin !
Laß den Javascript-Pfusch, Du hast über den Client keine Kontrolle.
find ich aber besser so zu machen.
wie meinst du das mit keine controlle?Wie willst Du mich daran hindern, Javascript abzuschalten?
Wie willst Du mich daran hindern, dein Formular zu kopieren und mit absichtlich falschen Werten mehrfach an Deine Applikation zu schicken?
Wie willst Du mich daran hindern, noch bösere Sachen anzustellen?
Es geht nicht, die Kontrolle über den Browser hat der Surfer, nicht Du. Und das ist auch gut so. Deswegen MUSST Du auf dem Server die übergebenen Werte prüfen.
Du kannst Dir die Arbeit machen, auf dem Client zusätzlich zu überprüfen, ob die Werte ok sind, und so den User schneller als mit einem HTTP-Request-Response-Vorgang über die fehlerhafte Eingabe informieren. Das ist aber reiner Luxus.
Den Rest dieser Diskussion findest Du mehrfach im Archiv.
Alexander
jaa, ich mach auch noch eine abfrage, aber beantworte mir doch erstnmal einfach meine frage!
Hallo japp,
1. Weisst Du was ein Voll-Quottel ist? ;-P
2.
jaa, ich mach auch noch eine abfrage, aber beantworte mir doch erstnmal einfach meine frage!
Hat der Alex doch wunderbar gemacht:
Spricht für Probleme auf der Serverseite. Sowas kann man abfangen. Beweis: Dieses Forum. Ansatz: Ins formular eine (wie auch immer geartete) eindeutige Nummer einbauen, die beim Absenden auf dem Server nur einmal akzeptiert wird.
Ausserdem hast Du um eine Erklärung gebeten:
wie meinst du das mit keine controlle?
Nimm Dir die Tipps zu Herzen, Javascript ist keine gute Methode um Usereingaben zu checken, da - wie schon Alex geschrieben hat - diese manipulierbar sind. Serverseitig hat der User eigentlich keine Chance auf Deine Fehlerbehandlung Einfluss zu nehmen. Ergo bleibt eigentlich nur noch als praktikable Möglichkeit (von einer generellen Anmeldung auf der Website abgesehen) die Methode mit der eindeutigen ID die in einem hidden field mitgesendet wird.
Gruss AndreD
Hallo,
jaa, ich mach auch noch eine abfrage, aber beantworte mir doch erstnmal einfach meine frage!
Hat der Alex doch wunderbar gemacht: (...)
Klingeling, vielleicht lesen wir noch einmal, was er gefragt hat:
aber dann ist das teil disabled, aber es wird nicht witergeleitet um die eingabe zu verarbeiten... warum nicht?
Und darauf hat ihm bis jetzt niemand eine Antwort gegeben, und somit ist es unnötig, dass du nachplapperst, was schon gesagt wurde.
Ich weiß darauf auch keine Antwort auf das »Warum« - ich hätte angenommen, dass ein explizites return false nötig wäre, um die Standard-Ereignisbehandlung aufzuhalten, aber das Ausschalten des Submitbuttons bricht sogar das Abschicken des Formulars bei onsubmit ab. Insofern hilft für die Browser, welche das Formular nicht abschicken, vielleicht ein document.topicform.submit() (http://selfhtml.teamone.de/javascript/objekte/forms.htm#submit).
Javascript ist keine gute Methode um Usereingaben zu checken
Natürlich, sie kann unnötigen HTTP-Traffic verhindern.
da (...) diese manipulierbar sind.
Das ist kein Argument gegen Vorprüfungen.
Mathias
Moin Moin !
Das ist kein Argument gegen Vorprüfungen.
... für die es in SelfHTML ein fertiges Beispiel gibt: http://selfhtml.teamone.de/javascript/beispiele/formulareingaben.htm, es fehlt IMHO lediglich ein "return true" am Ende der chkFormular-Funktion.
Alexander
Moin Moin !
Das ist kein Argument gegen Vorprüfungen.
... für die es in SelfHTML ein fertiges Beispiel gibt: http://selfhtml.teamone.de/javascript/beispiele/formulareingaben.htm, es fehlt IMHO lediglich ein "return true" am Ende der chkFormular-Funktion.
Alexander
danke an die die mich richtig verstanden haben,
nur bekomm ich das nich auf die reihe mit dem submit das klapp gar nicht,.
<script type="text/javascript">
<!--
function los()
{
document.topicform.submit();
document.topicform.submitbutton.disabled=true
}
//-->
</script>
<input ype="submit" value="Absenden" name="submitbutton" onlick="los()">
das form macht einfach ganz normal weiter... auch wenn ich die reihenfolge der funktion änder, es geht nicht.
Moin Moin !
... für die es in SelfHTML ein fertiges Beispiel gibt: http://selfhtml.teamone.de/javascript/beispiele/formulareingaben.htm, es fehlt IMHO lediglich ein "return true" am Ende der chkFormular-Funktion.
Hast Du Dir das Beispiel angesehen?
<pause>
Warum nicht?
<pause>
Hast Du es Dir jetzt angesehen?
<pause>
Was ist Dir aufgefallen?
<pause>
Fummelt das Script am Submit-Button rum?
<pause>
Was macht es stattdessen?
<pause>
Warum ist der Weg wohl besser? (Tip: ENTER-Taste schickt das Formular u.U. ebenfalls ab.)
<pause>
Noch Fragen?
Alexander
Klingeling, vielleicht lesen wir noch einmal, was er gefragt hat:
Ist passiert...
Und darauf hat ihm bis jetzt niemand eine Antwort gegeben, und somit ist es unnötig, dass du nachplapperst, was schon gesagt wurde.
Ich habs nicht nachgeplappert, ich finds halt nich so toll wenn jemand eine lösung präsentiert und diese dann mit einem "jaa, ich will aber das es so läuft" wegwischt ohne das man sich vielleicht mal mit der anderen Möglichkeit auseinandersetzt. Du schreibst ja auch:
Ich weiß darauf auch keine Antwort auf das »Warum« - ich hätte angenommen...
Also nix genaues weiss man nicht. Wäre es evt. möglich das schon bestehende Ausschalten (das geht ja, oder?) des Submitbuttons a) mit einer zeitlichen Sperre oder b) mit einer Funktion welche die Klicks zählt zu kombinieren? b) sollte doch auf jeden Fall gehen das wenn Klick auf Submit >1 die Sperre in Kraft tritt?
Javascript ist keine gute Methode um Usereingaben zu checken
Natürlich, sie kann unnötigen HTTP-Traffic verhindern.
Sicher, aber als einzige Prüfung ungenügend und so hats meiner Ansicht nach ausgesehn.
da (...) diese manipulierbar sind.
Das ist kein Argument gegen Vorprüfungen.
Wenns die einzige Prüfung bleiben soll IMHO schon.
Mathias
Nix für ungut & Gruss AndreD