2010-09-03 11 views
5

Ecco cosa voglio fare. Voglio attivare un evento ogni volta che cambia un elemento selezionato. Ho una selezione multilinea e quando apporto le modifiche (fai clic sugli elementi), non cambia finché la casella di selezione non viene messa a fuoco. Quindi sto provando a forzare una sfocatura ogni volta che si fa clic sulla casella di selezione. In questo modo se cambia, attiverà l'evento modificato. Se non cambia, non accadrà nulla.Come posso forzare un evento di sfocatura in JavaScript?

Come posso fare? Mi sto avvicinando anche a questo nel modo giusto? Anche le risposte di Jquery vanno bene.

+1

Se si esegue questa operazione, si incazzano coloro che utilizzano la tastiera per spostarsi tra le opzioni dell'elenco di selezione. –

+1

@Roatin, dipende. Se sta cambiando una classe di etichette, nessuna grossa, se sta lanciando un avviso ...;) – Marc

risposta

1

Ok, ecco che cosa stava succedendo. Stavo includendo la versione -vsdoc di JQuery invece della vera e propria libreria JQuery. Questo risolve anche alcuni problemi che stavo avendo con alcuni plugin come blockUI.

+0

Per chiarire, NON si desidera includere -vsdoc. Questo dovrebbe essere usato solo per intellisense. –

1

È possibile allegare un gestore onclick alla selezione e alle singole opzioni. in pratica onclick="this.blur();". Ho sempre riscontrato che gli eventi di clic sugli elementi <select> erano un problema, poiché non succede nulla al punto che ci si aspetta.

3

utilizzando jQuery fare:

$('#mySelectBox').change(function() { 
    //do things here 
}); 

Secondo la documentazione al http://api.jquery.com/change/, l'evento viene attivato immediatamente quando l'utente effettua una selezione.

Partenza questa demo per verificare che questo funziona: http://jsfiddle.net/AHM8j/

+1

Sì. Questo è l'evento che l'OP dovrebbe ascoltare. –

+0

Questo potrebbe non accadere in IE. IE è notoriamente pessimo con l'evento 'change'. http://stackoverflow.com/questions/1637503/jquery-change-event-on-select-not-firing-in-ie –

+0

Quella demo che ho fornito mi sembra che funzioni negli IE 6-8. Inoltre, dalla documentazione fornita: "A partire da jQuery 1.4, l'evento di modifica ora funziona e funziona in modo identico a tutti gli altri browser, in Internet Explorer." – Ender

5

Oltre a Ender il codice completo potrebbe essere qualcosa di simile.

$('#mySelectBox').change(function() { 
    $('#thingToBlur').blur(); 
}) 

Riferimento: http://api.jquery.com/blur/

Problemi correlati