Funktionsaufruf beim Klicken eines Eintrags aus der Auswahlliste
Samir
- javascript
0 Julian Hofmann0 Utz
Habe ein Problem, daß mich schon wahnsinnig macht. Ich habe eine Auswahlliste (SELECT), ich möchte daß beim Klick auf einen Eintrag eine Funktion aufgerufen wird. Dies geht mit dem Event "onChange", aber es passiert logischerweise nichts, wenn der Eintrag gewählt wird, der bereits zuvor gewählt wurde. Ich möchte, daß die Funktion auch in diesem Fall aufgerufen wird. Bitte um eine dringende Antwort, falls jemand dieses Problem schon hatte und die Lösung gefunden hat. Es reicht, wenn die Lösung mit MSIE funktioniert. Vielen Dank.
Samir (samir.sofovic@start.de)
<select id="aaa" onChange="tueWas();">
<option selected value="aaa">aaa</option>
<option value="bbb">bbb</option>
<option value="ccc">ccc</option>
</select>
function tueWas() {
...// geht, aber wenn z.B. "aaa" gewählt wird,
// passiert nichts, da dieser Eintrag bereits
// beim Starten als default steht. Weitere
// Eintraäge, auch leere, sind nicht erlaubt.
}
Gruß,
Samir
Hallo Samir,
hast Du mal drüber anchgedacht, wie das rein interpretationsmäßig gehen soll? Angenommen, Dein Browser würde ein "nicht geändert" als Event erkennen, würde er dann nicht sofort nach dem Laden die Funktion aufrufen? Der Browser kann also sinnvollerweise nur auf Ereignisse reagieren (bzw. auf onLOad, was aber hier wohl unsinnig ist).
Eine Alternative ist, den ersten Punkt mit "- Bitte wählen -" zu belegen, so dass eine Änderung erzwungen wird.
Grüße aus Würzburg
Julian
Hallo Julian,
Danke für die rasche Antwort. Das mit "Bitte wählen" ist hier leider nicht möglich, da in der Liste immer der aktuell gewählte Eintrag zu sehen sein muß. Was ich bräuchte wäre so etwas wie das Event "onSelect", dieses funktioniert aber nicht mit dem SELECT Tag. Man müsste also versuchen, etwa onClick Event oder ein Ähnliches angewendet auf Select Tag mit weiterem JavaScript Code zu kombinieren um dies zu bewirken.
Samir
Hallo Samir,
hast Du mal drüber anchgedacht, wie das rein interpretationsmäßig gehen soll? Angenommen, Dein Browser würde ein "nicht geändert" als Event erkennen, würde er dann nicht sofort nach dem Laden die Funktion aufrufen? Der Browser kann also sinnvollerweise nur auf Ereignisse reagieren (bzw. auf onLOad, was aber hier wohl unsinnig ist).
Eine Alternative ist, den ersten Punkt mit "- Bitte wählen -" zu belegen, so dass eine Änderung erzwungen wird.
Grüße aus Würzburg
Julian
Hi Sami,
nur IE, sagst Du? Dann würde ich zu einem simplen onClick raten:
<select id="aaa">
<option selected value="aaa" onClick="tueWas();">aaa</option>
<option value="bbb" onClick="tueWas();">bbb</option>
<option value="ccc" onClick="tueWas();">ccc</option>
</select>
Geht übrigens außer mit IE mit jedem Browser, der JavaScript und HTML 4 kann (nur halt nicht mit Netscape 4 *g*)
Grüße,
Utz
Hi Utz,
Danke für die schnelle Antwort, die Welt wäre schön, wenn es so einfach wäre. Am Besten schaust Du Dir mal das folgende Beispiel an:
<html><head></head><body bgcolor="wheat">
<script>
function zeigeGewahlteOption() {
alert(selecttag.options[selecttag.options.selectedIndex].value)
}
</script>
<table><tr><td>
<select id="selecttag" size=1 onClick="zeigeGewahlteOption();">
<option value="aaa">aaa</option>
<option value="bbb">bbb</option>
<option value="ccc">ccc</option>
<option value="ddd">ddd</option>
</select>
</td></tr></table>
</body></html>
Beim ersten Klick auf die Auswahlliste erscheint schon Alert und Liste wird wieder auf den eben dagewesenen Punkt gesetzt. So kannst Du überhaupt nihct mehr einen anderen Eintrag wählen als den, der Defaultmäßig da steht.
Gruß,
Samir
Hi Sami,
nur IE, sagst Du? Dann würde ich zu einem simplen onClick raten:
<select id="aaa">
<option selected value="aaa" onClick="tueWas();">aaa</option>
<option value="bbb" onClick="tueWas();">bbb</option>
<option value="ccc" onClick="tueWas();">ccc</option>
</select>
Geht übrigens außer mit IE mit jedem Browser, der JavaScript und HTML 4 kann (nur halt nicht mit Netscape 4 *g*)
Grüße,
Utz
Hi Sami,
nein, so meinte ich das auch gar nicht. onClick soll nicht in den select-Tag, sondern in _jeden_ option-Tag.
Grüße,
Utz
Die Idee ist gut, aber der Browser ignoriert das onClick Event bei den Option Tags.
Hi Sami,
nein, so meinte ich das auch gar nicht. onClick soll nicht in den select-Tag, sondern in _jeden_ option-Tag.
Grüße,
Utz
Hi Sami,
Die Idee ist gut, aber der Browser ignoriert das onClick Event bei den Option Tags.
Ach Du Schande, stimmt, der IE 5 spielt da nicht mit (auch nicht, wenn man Dein Beispiel zu gültigem HTML verändert [<form>...</form> ums Select rum]) - tja, das Teil kann halt auch kein HTML 4 *grummel*
Mozilla macht's natürlich erstklassig.
Grüße,
Utz
Hi Utz,
Ich selbst bin kein Freund der MS Welt, aber ich habe solche Vorgaben bekommen. Na ja, ich habe inzwischen einen Ausweg gefunden, ich muß doch eine zusätzliche Option mit leerem Inhalt hinzufügen und dann dafür sorgen, daß nach jedem Aufruf einer Option danach die leere Option als aktive gezeigt wird. Vielen Dank für Deine Mühe.
Grüße,
Samir
Hi Sami,
Die Idee ist gut, aber der Browser ignoriert das onClick Event bei den Option Tags.
Ach Du Schande, stimmt, der IE 5 spielt da nicht mit (auch nicht, wenn man Dein Beispiel zu gültigem HTML verändert [<form>...</form> ums Select rum]) - tja, das Teil kann halt auch kein HTML 4 *grummel*
Mozilla macht's natürlich erstklassig.
Grüße,
Utz