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"
Beim FF2 unter "Extras->Fehler->Konsole"
Antwort 2 von rfb
in der Zeile
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.
Zitat:
<input type="submit" value="WEITER" name="myButton" disabled = "True">
steckt so einiges an Fehlermöglichkeiten:<input type="submit" value="WEITER" name="myButton" disabled = "True">
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!!!
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:
im HTML lautet die Zeile:
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!
- 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ä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!
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
http://de.selfhtml.org/javascript/objekte/location.htm#search
Antwort 9 von ratloserUser
hallo rfb!!!
Vielen Dank, habe heute deine Tips:
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:
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.
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 :-(<html><head><title>Seitentitel</title><SCRIPT LANGUAGE="JavaScript"><!-- location=´seite.html´ //-->
</SCRIPT></head>
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.
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.