Supportnet Computer
Planet of Tech

Supportnet / Forum / Skripte(PHP,ASP,Perl...)

Javascript funzt nur in IE, nicht im FF





Frage

ich habe gestern ganz stolz eine Webseite geschrieben und diese funzt auch im IE, aber nicht im FF es soll ein Button (myButton) bei Aufruf disabled sein, dieser wird erst bei auswahl eines Radio-Button (erster_wert) enabled. im FF funzt dies nicht Bitte helft mir. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html><head> <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"> <meta http-equiv="language" content="de"> <meta name="robots" content="index, follow"> <title></title> <script type="text/javascript"> function buttonon () { document.getElementById(´myButton´).disabled = false; } </script> </head> <body Color="#ffffff" bgColor="#ffffff" marginheight="0" marginwidth="0" topmargin="3" leftmargin="20" rightmargin="10" vLink="#808000" alink="#FF0000"> <div align="right"><img src="/logo.jpg" alt="logo"></div> <form action="/system-cgi/formmail.pl" method="POST"> <input type="hidden" name="recipient" value="meine.email@gmx.de"> <input type="hidden" name="realname" size="20" value="Umfrage"> <input type="hidden" name="email" size="20" value=""> <input type="hidden" name="subject" size="20" value="1"> <input type="hidden" name="redirect" value="/frage2.htm"> <input type="hidden" name="required" value="erster_wert"> <input type="hidden" name="missing_fields_redirect" value="/required.htm"> <input type="hidden" name="env_report" value="REMOTE_HOST,REMOTE_ADDR,REMOTE_USER,HTTP_USER_AGENT"> <span style="font-family:´Times New Roman´,Times,serif; font-size:100%"> <br><br><br><br> Welche Haarfarbe besitzen sie? <br><br><br><br><br> <input type="radio" name="erster_wert" value="gelb" onclick="buttonon ();"> gelb<br> <input type="radio" name="erster_wert" value="braun" onclick="buttonon ();"> braun <br> <input type="radio" name="erster_wert" value="rot" onclick="buttonon ();"> rot<br> <input type="radio" name="erster_wert" value="schwarz" onclick="buttonon ();"> schwarz<br> <br><br><br> <center> <input type="submit" value="WEITER" name="myButton" disabled = "True"> </center> <br><br><br><br> </span> </form> </body></html>

Antwort 1 von Supermax

Der FF hat ein eigenes Fenster, in dem JavaScript/CSS Fehler angezeigt werden. Das ist beim Debuggen von solchen Problemen sehr hilfreich.

Beim FF2 unter "Extras->Fehler->Konsole"

Antwort 2 von rfb

in der Zeile
Zitat:
<input type="submit" value="WEITER" name="myButton" disabled = "True">
steckt so einiges an Fehlermöglichkeiten:

1. du vergibst einen Namen mit name="myButton", im Script fragst du aber nach einem Element mit der ID id="myButton", das müsstest du zumindest dort noch einfügen.

2. disabled steht entweder allein oder mit dem Wert disabled="disabled", niemals mit true oder ähnlichem

Anmerkung: User ohne JavaScript frustrierst du, da nach dem Ausfüllen des Formulars nix passiert - da musst du noch nachbessern.

Antwort 3 von ratloserUser

Danke für die schnellen Antworten!!!

Stimmt, User ohne Javascript stehen bei dieser Seite dumm da, also muß ich vorher irgendwie abfragen, ob javascript verwendet werden darf.

<html><head><title>Seitentitel</title><SCRIPT LANGUAGE="JavaScript"><!-- location=´seite.html´ //-->
</SCRIPT></head>

werde ich also einfügen.

Das Problem mit den Radio-Buttons bin ich noch nicht angegangen, werde morgen berichten.
Schönes WE noch!!!

Antwort 4 von rfb

besonders elegant ist das nun wirklich nicht, da du ja so 2 Seiten vorhalten musst.

Es ist sinnvoller das Attribut disabled im HTML wegzulassen und mit window.onload nach dem Laden der Seite zuzufügen.

aus
<script type="text/javascript">
function buttonon ()
{
document.getElementById(´myButton´).disabled = false;
}
</script>


wird dann:
<script type="text/javascript">
function buttonoff() {
document.getElementById(´myButton´).disabled=true;
}
function buttonon () {
document.getElementById(´myButton´).disabled=false;
}
window.onload=buttonoff;
</script>


im HTML lautet die Zeile:
<input type="submit" value="WEITER" id="myButton">


Antwort 5 von rfb

noch 1-2 Anmerkungen:

- wenn der User den Radiobutton per Tastatur ändert passiert ebenfalls wieder nix, da das Programm ja auf onclick wartet

- aus den div hidden-Feldern entnehme ich dass es eine serverseitige Verarbeitung mit Auswertung, ob überhaupt eine Auswahl getroffen wurde, und entsprechenden Fehlerseiten gibt - wozu dann noch der JavaScript-Aufwand?

- wenn die JS-Prüfung aber schon sein soll ist ein Abfangen über onsubmit sinnvoller, das fängt einfach das komplette Formular vor dem Absenden ab, du kannst dann in Ruhe alle Eingaben prüfen und ggf. eine Fehlermeldung auf der Seite erscheinen lassen. Und wenn kein JavaScript verfügbar ist wird das Formular eben einfach losgeschickt. Weiterer Vorteil: du sparst die onclick-Orgie!

Antwort 6 von rfb

das sähe dann so aus:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html><head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
<meta http-equiv="language" content="de">
<title>1. Frage</title>
<script type="text/javascript">
function test () {
var gewaehlt=false;
var radios=document.getElementById("formular").erster_wert;
for (var r=0;r<radios.length;r++) {
if (radios[r].checked == true) {
gewaehlt=true;
break;
}
}
if (!gewaehlt) document.getElementById("botschaft").firstChild.data="Bitte eine Auswahl treffen!";
return gewaehlt;
}
</script>
</head>
<body>
<form action="/system-cgi/formmail.pl" method="POST" id="formular" onsubmit="return test()">
<input type="hidden" name="recipient" value="meine.email@gmx.de">
<input type="hidden" name="realname" size="20" value="Umfrage">
<input type="hidden" name="email" size="20" value="">
<input type="hidden" name="subject" size="20" value="1">
<input type="hidden" name="redirect" value="/frage2.htm">
<input type="hidden" name="required" value="erster_wert">
<input type="hidden" name="missing_fields_redirect" value="/required.htm">
<input type="hidden" name="env_report" value="REMOTE_HOST,REMOTE_ADDR,REMOTE_USER,HTTP_USER_AGENT">
<p>Welche Haarfarbe besitzen sie?</p>
<p id="botschaft">Bitte w&auml;hlen:</p>
<input type="radio" name="erster_wert" value="gelb">gelb<br>
<input type="radio" name="erster_wert" value="braun">braun <br>
<input type="radio" name="erster_wert" value="rot">rot<br>
<input type="radio" name="erster_wert" value="schwarz">schwarz<br>
<input type="submit" value="WEITER">
</form>
</body></html>


Antwort 7 von ratloserUser

super vielen Dank!!!
wenn es funzt, schreib ich noch mal.

Eine Frage hab ich noch:
Wenn man eine abfrage von radio-buttons auf mehrere Seiten verteilen will, wie kann man dann die Informationen zum schluß gesammelt mit formmail.pl versenden, bzw. wie kann man sie von einer html Seite auf die andere übergeben?

Vielen Dank
und schönen Sonntag!

Antwort 8 von rfb

du kannst Infos von einer Seite zur nächsten durch Anhängen von Parametern an die URL der neuen Seite weitergeben, siehe
Zitat:
http://de.selfhtml.org/javascript/objekte/location.htm#search


Antwort 9 von ratloserUser

hallo rfb!!!

Vielen Dank, habe heute deine Tips:

Zitat:
in der Zeile
<input type="submit" value="WEITER" name="myButton" disabled = "True">
steckt so einiges an Fehlermöglichkeiten:

1. du vergibst einen Namen mit name="myButton", im Script fragst du aber nach einem Element mit der ID id="myButton", das müsstest du zumindest dort noch einfügen.

2. disabled steht entweder allein oder mit dem Wert disabled="disabled", niemals mit true oder ähnlichem

Anmerkung: User ohne JavaScript frustrierst du, da nach dem Ausfüllen des Formulars nix passiert - da musst du noch nachbessern.


nachgebessert, und es funzt!!!!
dankeschön!
nun hab ich nur noch das Problem, ob ein Browser Javascriptfähig ist oder nicht.

Der Tipp vom:
Antwort 4 von rfb vom 04.11.2006, 17:54
bzw
Antwort 6 von rfb vom 05.11.2006, 10:26
zeigt den Button beim Start nicht disabled, ist aber notwendig!!

Mein:
Zitat:
<html><head><title>Seitentitel</title><SCRIPT LANGUAGE="JavaScript"><!-- location=´seite.html´ //-->
</SCRIPT></head>
funzt leider nicht richtig :-(

Antwort 10 von rfb

Nimm den Code aus Antwort 6, der umgeht die Probleme komplett!
Dein Lösungsansatz war zwar recht nett, verursacht aber eine Reihe Folgeprobleme. Mein Code aus Antwort 6 nutzt den Event-Handler onsubmit, der genau für diese Fragestellung gedacht ist.
Der Button muss gar nicht disabled sein, da seine Funktion durch onsubmit geändert wird.

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: