2013-02-28 14 views
9

mam ten przykład:Selection Wejście Zmieniono Event

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

muszę złapać zdarzenie, gdy użytkownik wybierze opcję (z myszy lub klawiatury).

Próbowałem zrobić onchange = "MySuperFunction();" ale działa to tylko wtedy, gdy element jest zaznaczony, a następnie lista jest nieostra.

+0

nadzieję, że to pomoże Ci [ spróbuj ten link] [1] [1]: http://stackoverflow.com/a/25616981/3782212 – Shana

Odpowiedz

16

Impreza input powinien pracować na to, co trzeba. Jak rozumiem, nie można korzystać z datalisty bezpośrednio, ale jest on podłączony do danych wejściowych za pomocą atrybutu list. Wiązanie to wydarzenie pójdzie na tym wejściu:

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

http://jsfiddle.net/vccfv/

+0

Dziękuję !!! :) – swamprunner7

+0

To odpowiada nie tylko zdarzenia związane z datalistami, ale wszelkie zmiany w danych wejściowych, w tym gdy użytkownik wpisze własny tekst. – mindeavor

1

K o rz jQuery można użyć .changehttp://jquery.com/

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

lub

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

On nie używa jquery –

+1

, dlatego zasugerowałem go z linkiem do strony jQuery, jeśli uważasz, że to przesada, a następnie sugeruję, aby go nie używać – martriay

+1

i przy użyciu jquery. ale nie w próbie. hmm, próbowałem po prostu $ ('# browsers'). change (function() {alert();}); nie działa: ( – swamprunner7

2

Aby uzyskać ten sam efekt "Pigułki Explosion" rozwiązanie z wykorzystaniem stylu JQuery:

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