2014-11-03 6 views
16

Ich möchte JavaScript-Funktion aufrufen, wenn Wert in der Dropdown-Liste ändert. Ich möchte die Dropdown-Liste ID nicht fest codieren.Aufruf Javascript Funktion onchange Ereignis der Dropdown-Liste

daher nicht document.getElementById

Mein Code verwendet:

<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); 
} 

Dies wird geben Fehler ReferenceError: jsFunction is not defined

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

+2

[Das möchte] (http://jsfiddle.net/ 6uyz4b8x/2 /)? Sie müssen die Fiddle-Einstellungen aktualisieren, ändern Sie das 2. Dropdown-Menü zu ** nowrap in ** zu fidddle! –

+0

@DhavalMarthak: Ja +1! – Shaggy

Antwort

16

Ihr Code funktioniert nur Sie Ihre javscript Methode vor DOM bereit erklären müssen.

your working example

8

Ich weiß nicht, warum Sie diese onmousedown Veranstaltung brauchen hier, aber was Sie tun müssen, ist Ihre Funktion über die tatsächliche Nutzung zu stellen. Schauen Sie sich die snipplet unter:

<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 nicht in guten Verschluss ist. ändern:

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

und verwenden Sie keine globalen Variablen und Funktionen, ändern Sie es in module

+0

Es löst das Problem nicht. Ihre Antwort gibt nur einen guten Rat. –

+0

überprüfen, löst es :) – bemol

+0

Seltsam ... Es tut tatsächlich. Sorry über das;) –

3

mit jQuery

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

jsFiddle

+0

Was, wenn ich den Text bekommen möchte von der Auswahl auch. Ich habe '$ (this) .text()' versucht, aber es zeigt alle Texte für das gesamte Dropdown für jeden einzelnen Klick. – Unbreakable

4

du nur versuchen, es ist so einfach

<script> 

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

</script> 
+1

So erhalten Sie den Text: – Unbreakable

+0

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

Verwandte Themen