onSubmit: Alle Felder auf 'readOnly' setzen
Snucky
- javascript
0 Klawischnigg0 Kalle_B0 Snucky0 Klawischnigg0 Kalle_B
0 Snucky
0 MudGuard
0 Skeeve
Ich habe ein Formular, das mitunter große Datenmengen zum Server schicken kann. Es wird schick ein Loadingimage beim Absenden angezeigt, etc., allerdings möchte ich verhindern, dass der User das Formular ein zweites Mal absenden könnte. Dazu wollte ich alle Form-Elemente of readonly=true setzen.
function ich_werde_bei_on_Submit_aufgerufen(form_handle)
{
var am_inputs = form_handle.length;
for (var i=0; i<am_inputs; i++)
{
form_handle.elements[i].readOnly = true;
}
}
Es gibt keine Debug-Mitteilung von der Firefox Console und auch die Hilfen zu diesem Thema in anderen Threads helfen mir nicht weiter. Warum sollte das so schwer sein! Ist doch komisch, oder?
Hi there,
function ich_werde_bei_on_Submit_aufgerufen(form_handle)
{
var am_inputs = form_handle.length;
for (var i=0; i<am_inputs; i++)
{
form_handle.elements[i].readOnly = true;
}
}
readOnly ist keine Eigenschaft von form\_handel.elements. Wenn Du ein zweites Abschicken verhindern willst (wäre besser ohnehin serverseitig zu lösen, aber ok), warum läßt Du dann nicht einfach den Submit-Button verschwinden? Gib ihm eine ID, und dann kannst Du ihn nach dem submit-Check mit document.getElementById[ID].style.display='none' unsichtbar und damit nicht mehr klickbar machen...
Hi here,
... warum läßt Du dann nicht einfach den Submit-Button verschwinden? Gib ihm eine ID, und dann kannst Du ihn nach dem submit-Check mit document.getElementById[ID].style.display='none' unsichtbar und damit nicht mehr klickbar machen...
Der Zauber "Button verschwinden lassen" klappt aber nicht, wenn JavaScript ausgeschaltet ist.
Da wäre die Frage, ob man den Button vielleicht mit Javascript erzeugt. Ohne JS kann man dann gar nichts abschicken, mit JS nur einmal.
Kalle
Da wäre die Frage, ob man den Button vielleicht mit Javascript erzeugt. Ohne JS kann man dann gar nichts abschicken, mit JS nur einmal.
Ich kann das Formular auch absenden, indem ich im Eingabefeld die Eingabetaste betätige ... Die auch noch abzufangen macht das ganze Spiel etwas zu komplex!
Danke aber dennoch! (-> mit dem Submitbutton kann ich ja anfagen!)
Hi there,
Der Zauber "Button verschwinden lassen" klappt aber nicht, wenn JavaScript ausgeschaltet ist.
Der submit-Check auch nicht ;) Vielleicht sollte man das reflexartige "wenn Javascript ausgeschaltet ist" in diesem Forum generell etwas sparsamer verwenden...
Hi,there,
Der submit-Check auch nicht ;)
Deshalb Check nochmals serverseitig.
Vielleicht sollte man das reflexartige "wenn Javascript ausgeschaltet ist" in diesem Forum generell etwas sparsamer verwenden...
Ich bin "gebranntes Kind". Habe ein Programm gemacht mit Javascript und Cookies für einen Kunden. Musste dann feststellen, dass beides in dieser Firma aus Sicherheitsgründen gesperrt war.
Musste also das Konzept überarbeiten und habe einige Stunden unbezahlt gearbeitet, also einen Schaden gehabt.
Deshalb denke ich jetzt öfter: "Was wäre, wenn ..."
(wäre besser ohnehin serverseitig zu lösen, aber ok),
Ich wäre dir sehr verbunden, dieses Statement etwas näher erläutert zu bekommen! Ich stelle mir das eben nur so vor:
Dateiupload dauert zu lange. User ärgert sich. User schickt die Form nochmal ab.
Wie genau sich das auswirkt, weiß ich gar nicht. Aber sicher wird dadurch der Upload auch nicht schneller.
Der Server kann dieses Verhalten doch gar nicht beeinflussen, da er zu diesem Zeitpunkt die Daten vom Client noch gar nicht vollständig erhalten hat, oder sehe ich das falsch?
Hi there,
(wäre besser ohnehin serverseitig zu lösen, aber ok),
Ich wäre dir sehr verbunden, dieses Statement etwas näher erläutert zu bekommen! Ich stelle mir das eben nur so vor:
Im Lichte Deiner Erklärung macht das nicht viel Sinn, aber das hast Du zuvor ja nicht erläutert. Ich dachte, Du wolltest beispielsweise doppelte Einträge in einer DB verhindern, und so etwas löst man sinnvollerweise besser am Server.
Wenn es um Dateiupload geht, dann ist meine vorgeschlagene Lösungsvariante durchaus brauchbar. Inwieweit allerdings das Betätigen der Eingabetaste zu einem Upload führt, wenn die eigentliche Submit-Taste gar nicht vorhanden ist, mag browserabhängig sein...
Hallihallo!
Wenn es um Dateiupload geht, dann ist meine vorgeschlagene Lösungsvariante durchaus brauchbar. Inwieweit allerdings das Betätigen der Eingabetaste zu einem Upload führt, wenn die eigentliche Submit-Taste gar nicht vorhanden ist, mag browserabhängig sein...
Um diesem Problem aus dem Weg zu gehen, könnte man ja, statt nur den Submit- Knopf verschwinden zu lassen, die ganze Seite unter einem schön formatierten Hinweis auf die lange Upload- Zeit verschwinden lassen.
Also ein div (oder was auch immer ;) ) über die Seite legen mit einem Hinweistext, und diesem, um das "Enter-Tasten-Problem" zu eliminieren, den Focus geben.
Nur so eine Idee...
Viele liebe Grüße,
Der Dicki
Hi,
Ich habe ein Formular, das mitunter große Datenmengen zum Server schicken kann. Es wird schick ein Loadingimage beim Absenden angezeigt, etc., allerdings möchte ich verhindern, dass der User das Formular ein zweites Mal absenden könnte. Dazu wollte ich alle Form-Elemente of readonly=true setzen.
Und wieso meinst Du, das würde ein zweites "Absenden" verhindern?
Für ein zweites Absenden braucht der User das Formular nicht. Ein Klick auf den "Refresh"-Button reicht - und das kannst Du nicht verhindern.
cu,
Andreas
Moin!
Ich habe das nicht ausprobiert, aber setze die Formularelemente doch mal auf disabled.
-- Skeeve
Ich habe das nicht ausprobiert, aber setze die Formularelemente doch mal auf disabled.
FUnktioniert prima. Bis auf das Folgeproblem, dass die in dem Feld enthaltenden Daten nicht mehr im Formular mit abgeschickt werden :-0
Moin!
FUnktioniert prima. Bis auf das Folgeproblem, dass die in dem Feld enthaltenden Daten nicht mehr im Formular mit abgeschickt werden :-0
Kann ich hier mit FireFox nicht nachvollziehen.
Ich hatte das Problem auch mal und habe es so gelöst, daß ich einfach den Seiteninhalt mit einem weißen DIV überdeckt habe das nur eine "Bitte Warten" Grafik enthält. Damit ist dann nix mehr zum Klicken und Ändern erreichbar.
-- Skeeve