Saubere script/noscript-Lösung

Hallo,

ich habe ein Formular mit mehreren Buttons, die die Eingaben des Formulars mit Javascript lokal verarbeiten. Jetzt möchte ich die Verarbeitung von einem CGI-Skript machen lassen, falls Javascript deaktiviert ist.

Dazu würde ich gerne die Knöpfe (buttons) nur dann anzeigen lassen, wenn Javascript aktiviert ist, und im noscript-Bereich dann die buttons, die das Formular abschicken. Ich will vermeiden, dass das Formular abgeschickt wird, wenn Javascript aktiviert ist.

Gibt es dafür eine saubere Lösung?

Meine bisher beste Idee ist, die Buttons in ein div mit display:none zu packen, und beim laden der Seite das ganze mit Javascript auf display:block zu setzen. Das hätte aber den Nachteil, dass das ganze dann in Textbrowsern, die kein js können und kein CSS können, zweimal angezeigt wird.

Grüße,
Moritz

Hallo,

Ich will vermeiden, dass das Formular abgeschickt wird, wenn :Javascript :aktiviert ist.

Gibt es dafür eine saubere Lösung?

allerdings.

Du schreibst dein Formular so, als ob du seinen Inhalt standardmäßig an das entsprechende serverseitige Skript übergeben willst. Ins form-Element kommt zusätzlich noch ein Event-Handler, der die JavaScript-Funktion, die den Inhalt verarbeiten soll, aufruft und das Abschicken unterbindet. Das sieht dann so aus:

mfg
MB

Danke
Hallo,

Ich will vermeiden, dass das Formular abgeschickt wird, wenn :Javascript :aktiviert ist.

Gibt es dafür eine saubere Lösung?

allerdings.

[…]

Ich hatte sowas im Kopf, hab aber das return false; in die aufgerufene Funktion mit reingeschrieben. Und damit hat es (mit Firefox 1.5.0.7 unter Linux) nicht funktioniert.

Dankeschön,
Moritz

Hallo,

Ich hatte sowas im Kopf, hab aber das return false; in die
aufgerufene Funktion mit reingeschrieben. Und damit hat es
(mit Firefox 1.5.0.7 unter Linux) nicht funktioniert.

das ist mir unlängst ebenfalls passiert, seitdem schreibe ich es hinter den Funktionsaufruf. Wenn JavaScript den Versand der Daten natürlich nur unter bestimmten Voraussetzungen unterbinden soll (beispielsweise wenn Eingabefelder leer sind), ist das freilich nicht so besonders schlau :smile:

mfg
MB