2012-02-12 8 views
10

Mam proste HTML wybierz znacznik z niektórych opcji załączone:wykonać funkcji JavaScript z HTML wybierz

<select> 
<option>school a</option> 
<option>school b</option> 
<option>school c</option> 
</select> 

chciałbym dołączyć kilka prostych obsługi zdarzeń do opcji tak samo chciałbym powiedzieć .. . link:

<option onclick="scheduleA();">school a</option> 

muszę zbudować oddzielną funkcję javascript do czynienia z obsługi zdarzeń w tej sytuacji, czy też istnieje jakiś szybki html, który będzie wykonać to zadanie?

+0

Spójrz na 'onchange'. Możesz napisać jedną funkcję z parametrem. – Smamatti

+0

Tam twój idź mój przyjaciel http://stackoverflow.com/questions/2000656/using-href-links-inside-option-tag – Alexander

+0

Dzięki Alex, nie widziałem tego przed opublikowaniem. – kjarsenal

Odpowiedz

14

Lepiej byłoby przydzielić onChange="schedule(this.value); na <select>. Częściowo dlatego, że faktycznie działa, częściowo w celu uniknięcia redundancji kodu, jeśli ta sama opcja jest wybrana dwukrotnie, częściowo dlatego, że mniej procedur obsługi zdarzeń jest zawsze lepsza.

+0

@kjarsenal: Jeśli obsługujesz starsze wersje IE, po prostu upewnij się, że każdy element 'option' ma swój własny atrybut' value'. Starsze IE nie zastąpi automatycznie treści tekstowej z 'opcji', gdy nie nadasz jej atrybutu wartości. –

+0

zauważyć. wartości te będą generowane dynamicznie przez strukturę. Dziękuję Ci. – kjarsenal

7

Użyj zdarzenie onchange na select

<select onchange="scheduleA.call(this, event)"> 

potem w swojej obsługi ...

function scheduleA(event) { 
    alert(this.options[this.selectedIndex].text); 
} 

DEMO:http://jsfiddle.net/hYY6X/

0

stosowanie onchange zamiast

<select onchange="schedule(this.value)"> 
<option>school a</option> 
<option>school b</option> 
</select> 

function schedule(selectedValue){ 
    ... do something with selectedValue 
} 
+1

Może, z wyjątkiem odpowiedzi, której nie było, gdy ładowałem stronę ... Jeśli cokolwiek, to wzmacnia to, że jest to odpowiednie rozwiązanie. Moderatorzy mogą usunąć lub cokolwiek innego. Nie byłem tu tak długo, ale naprawdę mam wrażenie, że jest trochę nastawienia, którego nie lubię od społeczności - raczej nie zachęcając – dannix