2014-11-03 13 views
16

Chcę wywołać funkcję javascript, gdy wartość na liście rozwijanej się zmieni. Nie chcę, aby lista rozwijana listy hard identyfikator.wywołanie funkcji javascript wymień funkcję z listy rozwijanej

Stąd nie używając document.getElementById

mój kod:

<select id ="ddl" name="ddl" onmousedown="this.value='';" onchange="jsFunction(this.value);"> 
    <option value='1'>One</option> 
    <option value='2'>Two</option> 
    <option value='3'>Three</option> 
</select> 

function jsFunction(value) 
{ 
    alert(value); 
} 

To daje error ReferenceError: jsFunction is not defined

Fiddle: http://jsfiddle.net/6uyz4b8x/1/

+2

[żeby to] (http://jsfiddle.net/ 6uyz4b8x/2 /)? Musisz zaktualizować ustawienia skrzypiec, aby zmienić 2. menu na ** nowrap w ** na fidddle! –

+0

@DhavalMarthak: Tak +1! – Shaggy

Odpowiedz

16

Twój kod działa tylko trzeba zadeklarować metodę javscript przed DOM gotowy.

your working example

8

Nie wiem, dlaczego trzeba to onmousedown imprezę tutaj, ale musisz ustawić swoją funkcję powyżej rzeczywistego użycia. Spójrz na poniższy snipplet:

<script type="text/javascript"> 
 
function jsFunction(value) 
 
{ 
 
    alert(value); 
 
} 
 
</script> 
 

 
<select id ="ddl" name="ddl" onmousedown="this.value='';" onchange="jsFunction(this.value);"> 
 
    <option value='1'>One</option> 
 
    <option value='2'>Two</option> 
 
    <option value='3'>Three</option> 
 
</select>

1

jsFunction nie jest w dobrym zamknięciem. zmieni się na:

jsFunction = function(value) 
{ 
    alert(value); 
} 

i nie używać zmienne i funkcje globalne, zmienić go module

+0

To nie rozwiązuje problemu. Twoja odpowiedź daje tylko dobrą radę. –

+0

sprawdź, rozwiązuje :) – bemol

+0

Dziwne ... Tak naprawdę. Przepraszam za to;) –

3

użyciu jQuery

$("#ddl").change(function() { 
       alert($(this).val()); 
      }); 

jsFiddle

+0

Co zrobić, jeśli chcę uzyskać tekst również selekcji. Próbowałem '$ (this) .text()' ale pokazuje wszystkie teksty dla wszystkich rozwijanych dla każdego pojedynczego kliknięcia. – Unbreakable

4

Wystarczy spróbować, tak łatwo

<script> 

    $("#YourDropDownId").change(function() { 
      alert($("#YourDropDownId").val()); 
     }); 

</script> 
+1

Jak uzyskać tekst również – Unbreakable

+0

@Natbreakable: 'var e = document.getElementById (" YourDropDownId "); var str = e.options [e.selectedIndex] .value; ' – Rashmy

Powiązane problemy