onClick bei select in Formular
jochen kempf
- javascript
Hallo,
ich würde gerne die Optionen eines Select Formulars mit dem onClick Event belegen, so dass bei Auswahl einer Option in einem anderen Frame (mit dem Namen "Info") ein entsprechendes Fenster geöffnet wird.
Wenn ich nun folgende Funktion im Seitenkopf definiere und diese dann im Eventhandler aufrufe funktioniert leider gar nichts. Wo liegt da mein Denkfehler?
Code:
<html>
<head>
<script type="text/javascript">
<!--
function activate(x) {
if (x = Stirn)
{top.Info.window.close;
top.Info.window.open("Stirnanalyse.html","Stirnanalyse");}
}
//-->
</script>
</head>
<body>
<form>
<select>
<option value="Nase">Nase
<option value="Stirn" onClick="activate(Stirn)">Stirn
</select>
</form>
</body>
</html>
Moin,
Erstens:
Stirn ist ein String, und sollte als solcher übergeben (mit Anführungszeichen) werden:
<option value="Stirn" onClick="activate('Stirn')">Stirn
Zweitens:
Mit
if (x = Stirn)
setzt du x = Stirn und vergleichst es nicht.
Mach ein
if (x == 'Stirn') draus.
Vielleicht bringt dich das schonmal weiter.
Hallo,
ich würde gerne die Optionen eines Select Formulars mit dem onClick Event belegen, so dass bei Auswahl einer Option in einem anderen Frame (mit dem Namen "Info") ein entsprechendes Fenster geöffnet wird.
Wenn ich nun folgende Funktion im Seitenkopf definiere und diese dann im Eventhandler aufrufe funktioniert leider gar nichts. Wo liegt da mein Denkfehler?Code:
<html>
<head>
<script type="text/javascript">
<!--
function activate(x) {
if (x = Stirn)
{top.Info.window.close;
top.Info.window.open("Stirnanalyse.html","Stirnanalyse");}
}
//-->
</script>
</head>
<body>
<form>
<select>
<option value="Nase">Nase
<option value="Stirn" onClick="activate(Stirn)">Stirn
</select>
</form>
</body>
</html>
Danke für die Hinweise Joerg!
Allerdings funktioniert das ganze immer noch nicht und ich weiß nicht warum. :-(
Danke für die Hinweise Joerg!
Allerdings funktioniert das ganze immer noch nicht und ich weiß nicht warum. :-(
Hm, also was mir noch einfiele:
Du schliesst ein Frame mit window.open - wenn du in diesem Frame nur die URL-austauschen willst, müsste ein
top.Info.location.href = "neue_url"
reichen.
Ansonsten: Bist Du sicher, dass dein browser das Frame "Info" wirklich kennt, also dass du das wirklich so benannt hast? Alternativ könntest du
top.frames[0] anstatt von top.Info schreiben
(wobei 0 halt für das erste Frame stünde, 1 für das zweite usw.)
damit bist du auf der sichereren seite.
Ich glaube nicht dass das Problem in dem Erkennen des Frames liegt denn wenn ich eine Testversion ohne Frames erstelle, bei der lediglich ein neues Fenster geöffnet werden soll, funktioniert auch nichts.
Ich habe mal diese Testversion unten eingefügt (anstelle der if schleife habe ich switch verwendet):
<html>
<head>
<script type="text/javascript">
<!--
function activate(x) {
switch(x) {
case "Stirn":
window.open("Stirnanalyse.html","Stirnanalyse");
break;
case "Augen":
window.open("Augenanalyse.html","Augenanalyse");
break;
case "Augenbrauen":
window.open("Augenbrauenanalyse.html","Augenbrauenanalyse");
break;
case "Nase":
window.open("Nasenanalyse.html","Nasenanalyse");
break;
case "Mund":
window.open("Mundanalyse.html","Mundanalyse");
break;
}
//-->
</script>
</head>
<body>
Bitte tragen Sie den Zeitpunkt ein, wählen den Gesichtsbereich aus und schicken das Formular ab:
<form action = "http://localhost/tabelle.php" method = "post">
<select name="Gesichtsbereich">
<option name="Bereich" value="Stirn" onClick="activate('Stirn)">Stirn
<option name="Bereich" value="Augenbrauen" onClick="activate('Augenbrauen')" selected>Augenbrauen
<option name="Bereich" value="Augen" onClick="activate('Augen')">Augen
<option name="Bereich" value="Nase" onClick="activate('Nase')">Nase
<option name="Bereich" value="Mund" onClick="activate('Mund')">Mund
</select></td>
<input type="submit" value="Abschicken">
</form>
</body>
</html>
Hallo,
ich würde gerne die Optionen eines Select Formulars mit dem onClick Event belegen, so dass bei Auswahl einer Option in einem anderen Frame (mit dem Namen "Info") ein entsprechendes Fenster geöffnet wird.
Ein OPTION-Element hat kein Attribut onclick.
http://www.w3.org/TR/html4/interact/forms.html#h-17.6
<!ELEMENT OPTION - O (#PCDATA) -- selectable choice -->
<!ATTLIST OPTION
%attrs; -- %coreattrs, %i18n, %events --
selected (selected) #IMPLIED
disabled (disabled) #IMPLIED -- unavailable in this context --
label %Text; #IMPLIED -- for use in hierarchical menus --
value CDATA #IMPLIED -- defaults to element content --
>
Wenn ich nun folgende Funktion im Seitenkopf definiere und diese dann im Eventhandler aufrufe funktioniert leider gar nichts. Wo liegt da mein Denkfehler?
siehe oben.
<form>
<select>
<option value="Nase">Nase
<option value="Stirn" onClick="activate(Stirn)">Stirn
</select>
</form>
Das SELECT-Element hat das attribut onchange.
http://www.w3.org/TR/html4/interact/forms.html#h-17.6
<!ELEMENT SELECT - - (OPTGROUP|OPTION)+ -- option selector -->
<!ATTLIST SELECT
%attrs; -- %coreattrs, %i18n, %events --
name CDATA #IMPLIED -- field name --
size NUMBER #IMPLIED -- rows visible --
multiple (multiple) #IMPLIED -- default is single selection --
disabled (disabled) #IMPLIED -- unavailable in this context --
tabindex NUMBER #IMPLIED -- position in tabbing order --
onfocus %Script; #IMPLIED -- the element got the focus --
onblur %Script; #IMPLIED -- the element lost the focus --
onchange %Script; #IMPLIED -- the element value was changed --
>
Dieses musst Du als Eventhandler nutzen.
<select onchange="alert(this.options[this.selectedIndex].value);">
<option value="Nase">Nase
<option value="Stirn">Stirn
</select>
http://de.selfhtml.org/javascript/objekte/options.htm#allgemeines
http://de.selfhtml.org/javascript/objekte/options.htm#selected_index
http://de.selfhtml.org/javascript/sprache/objekte.htm#this
viele Grüße
Axel
Hi,
ich würde gerne die Optionen eines Select Formulars mit dem onClick Event belegen, so dass bei Auswahl einer Option in einem anderen Frame (mit dem Namen "Info") ein entsprechendes Fenster geöffnet wird.
Ein OPTION-Element hat kein Attribut onclick.
Doch. Du mußt die Parameter Entities beachten.
http://www.w3.org/TR/html4/interact/forms.html#h-17.6
<!ELEMENT OPTION - O (#PCDATA) -- selectable choice -->
<!ATTLIST OPTION
%attrs; -- %coreattrs, %i18n, %events --
%attrs; ist - wie im Kommentar schon angedeutet, definiert als:
http://www.w3.org/TR/html4/sgml/dtd.html#attrs
<!ENTITY % attrs "%coreattrs; %i18n; %events;">
und %events; ist wie folgt definiert:
http://www.w3.org/TR/html4/sgml/dtd.html#events
<!ENTITY % events
"onclick %Script; #IMPLIED -- a pointer button was clicked --
ondblclick %Script; #IMPLIED -- a pointer button was double clicked--
onmousedown %Script; #IMPLIED -- a pointer button was pressed down --
onmouseup %Script; #IMPLIED -- a pointer button was released --
onmouseover %Script; #IMPLIED -- a pointer was moved onto --
onmousemove %Script; #IMPLIED -- a pointer was moved within --
onmouseout %Script; #IMPLIED -- a pointer was moved away --
onkeypress %Script; #IMPLIED -- a key was pressed and released --
onkeydown %Script; #IMPLIED -- a key was pressed down --
onkeyup %Script; #IMPLIED -- a key was released --"
>
Da steht gleich als erstes onclick.
cu,
Andreas