2013-10-03 2 views
7

J'ai ce problème spécifique à IE8. Cet événement ne fonctionne pas dans IE8 seul, mais fonctionne correctement dans IE9 et d'autres navigateurs comme Firefox et Chrome.jquery .on ('input') ne se déclenche pas dans ie8 seul

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

S'il vous plaît laissez-moi savoir si il ya un travail autour pour le même dans IE8.

Merci!

+4

Je ne reconnais pas "entrée" comme déclencheur d'événement, moi-même Peut-être que je ne l'ai jamais vu – VoidKing

+1

Essayez d'utiliser 'change' ou' keyup' Au lieu de cela, 'input' n'est pas supporté par les anciens navigateurs – Joe

+0

@VoidKing et tous ceux qui ont upvoted votre commentaire: En savoir plus: [MDN oninput] (https://developer.mozilla.org/en-US/docs/Web/ API/GlobalEv entHandlers.oninput) – epascarello

Répondre

8

oninput est IE9 +, c'est pourquoi il ne fonctionne pas dans IE8

MDN oninput

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

Il ressemble à l'événement input est une partie de la spécification HTML5, quelque chose que je ne serait pas attendez IE8 à gérer. Vous devrez peut-être utiliser l'événement change à la place.

26

Les anciennes versions d'IE ont un événement appelé propertychange que vous pouvez utiliser. Vous pouvez vérifier l'événement propertychange et l'événement input en même temps:

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

Cette réponse devrait être plus élevée. Merci pour une bonne solution – Will

+0

Fonctionne pour moi. Merci beaucoup. –

+2

Fonctionne mais allume la propriété change l'événement deux fois dans IE8 ... utilisé ''keyup input'' à la place et cela a fonctionné! – Justin

4

réponse de AaronBaker: Travaux pour les IE8 et IE10 (html5), ainsi que les navigateurs modernes ... sans double post d'événement

J'aurais utilisé un commentaire ou un upvote mais un rep trop bas.

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

Cette légère optimisation empêchera l'auditeur de tirer deux fois dans les navigateurs modernes (une sorte de hack, mais prob la meilleure solution)

$ ('sélecteur'). Sur (! Window.eventListener? 'keyup': 'input', function() {