2013-02-28 13 views
9

Ho questo esempio:Selezione nell'Elenco sorgenti Modificato eventi

<datalist id="browsers"> 
    <option value="Internet Explorer"> 
    <option value="Firefox"> 
    <option value="Google Chrome"> 
    <option value="Opera"> 
    <option value="Safari"> 
</datalist> 

Ho bisogno di prendere un evento, quando l'utente seleziona l'opzione (con mouse o tastiera).

Ho provato a fare onchange = "MySuperFunction();" ma funziona solo quando un elemento è selezionato e quindi l'elenco non è focalizzato.

+0

speranza che questo vi aiuterà [ prova questo link] [1] [1]: http://stackoverflow.com/a/25616981/3782212 – Shana

risposta

16

L'evento input dovrebbe funzionare per quello che ti serve. Come ho capito, non è possibile utilizzare direttamente un datalist, ma è collegato a un input dall'attributo list. Questo legame evento avrebbe continuato a quell'ingresso:

document.getElementById('browsers-input').addEventListener('input', function() { 
    console.log('changed'); 
}); 

http://jsfiddle.net/vccfv/

+0

Grazie !!! :) – swamprunner7

+0

Questo risponde non solo agli eventi relativi ai datalist ma a qualsiasi cambiamento nell'input, anche quando l'utente digita il proprio testo. – mindeavor

1

Usin jQuery si potrebbe usare .changehttp://jquery.com/

$('datalist#browsers').change(MySuperFunction); 

o

$('datalist#browsers').change(function(){ 
    // stuff 
}); 
+0

Non sta usando jquery –

+1

è per questo che l'ho suggerito con un collegamento alla pagina jQuery, se pensi che questo sia eccessivo, quindi suggerisci di non usarlo – martriay

+1

io uso jquery. ma non nel campione. hmm, ho provato semplicemente $ ('# browser'). change (function() {alert();}); non funziona :( – swamprunner7

2

per ottenere lo stesso effetto di "Pillole di esplosione" soluzione con stile JQuery:

$("#browsers-input").on("input", MySuperFunction); 
Problemi correlati