2013-10-03 15 views
7

Ho riscontrato questo problema in IE8. Questo evento non viene attivato solo da IE8, ma funziona perfettamente con IE9 e altri browser come Firefox e Chrome.jquery .on ('input') non viene attivato in ie8 da solo

$('#myId').on('input', function() { 
    //do something. 
} 

Per favore fatemi sapere se c'è qualche problema per lo stesso in IE8.

Grazie!

+4

Non riconosco "input" come trigger di evento, io stesso. Forse non l'ho mai visto? – VoidKing

+1

Prova a usare 'change' o' keyup' invece, 'input' non è supportato nei browser più vecchi. – Joe

+0

@VoidKing e tutti quelli che hanno upvoted il tuo commento: Informazioni a riguardo: [MDN oninput] (https://developer.mozilla.org/en-US/docs/Web/ API/GlobalEv entHandlers.oninput) – epascarello

risposta

8

oninput è IE9 +, è per questo che non funziona in IE8

MDN oninput

Feature   Chrome Firefox Internet Explorer Opera Safari 
Basic support (Yes)  2   9     10  (Yes) 
1

Sembra che l'evento input è una parte della specifica HTML5, cosa che non sarebbe aspettarsi che IE8 gestisca. Potrebbe essere necessario invece utilizzare l'evento change.

26

Le versioni precedenti di IE hanno un evento chiamato propertychange che è possibile utilizzare. È possibile verificare l'evento e l'evento propertychangeinput allo stesso tempo:

$('#myId').on("propertychange input",function(ev){ 
    doAwesomeThing(); 
}); 
+0

Questa risposta dovrebbe essere più alta. Grazie per una buona soluzione – Will

+0

Funziona per me. Molte grazie. –

+2

Funziona ma lancia eventi di modifica delle proprietà due volte in IE8 ... usato ''input keyup'' invece che ha funzionato! – Justin

4

risposta di AaronBaker: funziona sia per IE8 e IE10 (HTML5), così come i browser moderni ... senza doppio post di evento

Avrei usato commenti o upvote ma rep troppo basso.

$('#myId').on("propertychange input",function(ev){ 
    doAwesomeThing(); 
}); 
1

Questa leggera ottimizzazione impedirà l'ascoltatore di sparare due volte nel browser moderni (una specie di hack, ma prob la soluzione migliore)

$ ('selettori'). On (! Window.eventListener? 'keyup': 'input', function() {}

Problemi correlati