Javascript : Bug sur IE8 avec l'évènement onkeyup

WRInaute occasionnel
Bonsoir,

Je suis confronté à un petit soucis sur IE8 sur un script dont je vous propose une synthèse pour simplifier :

Code:
<script type="text/javascript"> 
function msg()
{ 
	alert("Coucou !"); 
} 
</script> 

<input size='20' onkeyup="msg()" />

Ce script marche parfaitement sur Firefox et il marchait sur IE7 avant que je passe sur IE8.

Voilà ce que j'observe. Quand j'écris un caractère dans le input, il ne se passe rien. En revanche si j'efface ce caractère avec la touche d'effacement (pas Suppr mais l'autre avec la flèche vers la gauche), j'ai mon message qui apparait.
Sur IE7 ou Firefox, dès que j'appuis sur une touche, j'ai bien l'évènement qui se déclenche.
Bref, tout se passe comme si sur IE8, l'évènement onkeyup ne marchait pas. Auriez-vous une idée pour résoudre mon problème ?

Merci de m'aider.
 
WRInaute occasionnel
spout a dit:
Et si tu testais sur le "onchange" au lieu du "onkeyup" ?

Ca ne marche pas plus...

UsagiYojimbo a dit:
Voire utiliser des listener, en passant donc par prototype ou jquery ?

Ta réponse me parait ésotérique pour le pauvre autodidacte que je suis...

A la base, mon script est plus complexe, en fait il s'agit d'un script Ajax destiné à faire de l'autocompletion. Un truc que j'ai récupéré là : http://www.dhtmlgoodies.com/index.html?page=ajax (voir le script Ajax dynamic list).
 
WRInaute accro
EN utilisant la librairie javascript prototype (et jQUery propose quelque chose d'équivalent) tu peux faire ça (si tu nomme ton input myInput par exemple):

Event.observe(window, 'load', function() {
if ( $('myInput')) Event.observe('myInput', 'keyup', msg);
});
 
WRInaute accro
John Smith a dit:
Ah ! Je ne connaissais pas cette librarie prototype. Pourrais-tu me donner un bon lien qui explique comment la mettre en oeuvre et où la télécharger ?

https://www.google.be/#hl=fr&source=hp&q=prototype :mrgreen:
J'ai testé jQuery & Scriptaculous et je trouve jQuery qd même mieux.

Je pense que c'est assez parlant: https://www.google.be/trends?q=scriptaculous%2C+jquery&ctab=0&geo=all&d ... all&sort=1

Mais je trouve que mettre un framework JS pour juste ce onkeyup ça fait beaucoup.
 
WRInaute accro
Oui prototype ou jQuery. C'est bien mieux car en général ce sont des librairies qui fonctionnent sur tous les navigateurs, et évitent donc de devoir faire soi-même tous les tests et cas particuliers.
 
WRInaute impliqué
spout a dit:
Mais je trouve que mettre un framework JS pour juste ce onkeyup ça fait beaucoup.

Je trouve aussi, au cas ou, voici ma 'tite fonction "addEvent" multinavigateurs, support du "this" sous IE, etc, etc.. :mrgreen: :
Code:
<script type="text/javascript">
function addEvent(obj, eventName, fn){
	if (obj.addEventListener){
		obj.addEventListener(eventName, fn, false);
	} else if (obj.attachEvent){
		obj.attachEvent('on'+eventName, function(e){ return fn.call(obj, e); });
	}
}

// on l'utilise
addEvent(window, 'load', function(){
	addEvent(document.getElementById('monElement'), 'keyup', function(){
		alert( this.value );
	});
});
</script>


edit: tant que j'y suis, perso je préfère Mootools :p
 
WRInaute occasionnel
Merci de vos réponses. Cependant, le bug semble s'être résorbé de lui-même sans que je n'ai rien fait. Peut-être le résultat d'une mise à jour fortuite...
 
Discussions similaires
Haut