2014-11-03 13 views
16

Voglio invocare la funzione javascript quando il valore nell'elenco a discesa cambia. Non desidero l'ID dell'elenco a discesa dell'hardcode.chiamata javascript funzione onchange evento di elenco a discesa

Quindi non si utilizza document.getElementById

My Code:

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

Questo è l'errore dando ReferenceError: jsFunction is not defined

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

+2

[voglio questo] (http://jsfiddle.net/ 6uyz4b8x/2 /)? Devi aggiornare le impostazioni del violino, modifica il secondo dropdown a ** nowrap in ** a manomettere! –

+0

@DhavalMarthak: Sì +1! – Shaggy

risposta

16

Il codice funziona solo è necessario dichiarare il metodo javscript prima DOM pronto.

your working example

8

Non so perché avete bisogno di questo evento onmousedown qui, ma ciò che devi fare è mettere la tua funzione al di sopra dell'effettivo utilizzo. Guardate la snipplet qui sotto:

<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 non è in buona chiusura. cambiare per:

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

e non usare variabili e funzioni globali, trasformarla in module

+0

Non risolve il problema. La tua risposta dà solo un buon consiglio. –

+0

verifica, risolve :) – bemol

+0

Strano ... Lo fa davvero. Mi dispiace per quello;) –

3

utilizzando jQuery

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

jsFiddle

+0

Cosa succede se voglio ottenere il testo della selezione anche. Ho provato '$ (this) .text()' ma mostra tutti i testi per tutto il menu a discesa per ogni singolo clic. – Unbreakable

4

Devi solo provare questo, è così facile

<script> 

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

</script> 
+1

Come ottenere il testo – Unbreakable

+0

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

Problemi correlati