Antje Hofmann: Onklick im Formmailer

Beitrag lesen

Hallo Michael

erstmal muss ich mich von dem schock erholen ... das war ja der hammer - gut gemacht !!

stimmt. ich bin auch drauf reingefallen :-)

aber jezt zum thema:
ich habe einen formmailer gemacht http://www.djwoelk.de.vu/formmailer/index2.htm doch online gehts nicht so wie offline es erscheint ein laufzeit fehler - wieso ?

einige Fehler fanden sich da. Hauptfehler:

<base target="inline">

deine Verweise sehen so aus:

<a href="javascript:write()" onClick="javascript:window.document.f.recipient.value='webmaster@schranzfreak.de';javascript:window.document.f.email.value='djwoelk@freenet.de';javascript:window.document.f.subject.value='allgemein';javascript:window.document.f.text.value='schöner tag heute, ich habe mir mal gedacht ich lasse mal den link für mich schreiben.'">
Formular Standart 2</a>

Sobald ein Anwender auf den Verweis klickt wird zuerst der onclick-Event ausgewertet. Hier gehört das Wort javascript: nicht hinein. Onclick ist bereits Javascript.

Anschließend wird versucht, dem Link zu folgen. Durch die base-target-Angabe wird dem Browser aber gesagt, das Verweisziel liegt im Fenster "inline". Natürlich sucht der Browser jetzt genau in diesem Fenster, deinem iframe, die Funktion write(). Die existiert nicht, deshalb die Fehlermeldung.

Abgesehen davon ist write() als Funktionsname etwas unglücklich gewählt, da dies gleichzeitig der Name der Methode write() (document.write()) ist. Empfindliche Browser können da böse drauf reagieren.

Da deine Funktion gegenwärtig nichts tut, kannst du diese ersetzen mit javascript:void(0) (mag Opera 5.12, offline nur, wenn Inlineframe aktiviert sind). Besser ist es jedoch, du schreibst deine Verweise in der Form:

<a href="#" onClick="window.document.f.recipient.value='webmaster@schranzfreak.de';window.document.f.email.value='djwoelk@freenet.de';window.document.f.subject.value='allgemein';window.document.f.text.value='schöner tag heute, ich habe mir mal gedacht ich lasse mal den link für mich schreiben.';return false;">
Formular Standart 2</a>

Das return false am Ende deine Befehlsreihenfolge bewirkt, dass der Verweis nicht ausgeführt wird.

Alternativ kannst du, die base-target-Angabe weglassen bzw. im Verweis selbst,  target="_self" angeben. Diese Angabe überschreibt die base-Angabe.

meine eigentliche frage bezieht sich aber auf das erste feld im formular. das feld mit dem "disabled". wie kann ich mit einem onklick o.ä. das "disabled" hin und weg klicken ??
also: an/aus stellen ?

:-) ganz einfach:

<a href="#" onclick="document.f.recipient.disabled=!document.f.recipient.disabled;return false;">disabled an/aus</a>

Klappt allerdings nur im IE und Netscape 6. Opera 5.12 wollte nicht.
Prinzip:

ist  document.f.recipient.disabled==true wird nach klick
document.f.recipient.disabled==false und umgekehrt.

Mit document.f.recipient.disabled = !document.f.recipient.disabled wird also immer der gegenteilige Zustand erzeugt.

Viele Grüße

Antje