Bonjour,

J'ai un mystère à résoudre sur lequel je viens de passer la journée...

Chez un client ayant IE8, une fonction devant se déclencher lors de l'appui sur la touche entrée dans un input ne se déclenche pas, et il s'avère que visiblement l'événement onkeydown ne se déclenche même pas lorsque que la touche appuyée est "entrée" (alors que sur onkeypress ça semble marcher.)
Le problème, c'est que ça marche sous un de mes postes XP sous IE8 sans problème, et bien sur ça marche pour n'importe quel autre navigateur non Microsoft...
Pour pister le bug, j'ai du utiliser IETester sur lequel j'arrive à le reproduire..

Résultat : la fonction de jqGrid qui permet d'enregistrer une cellule lors de la validation par entrée ne se lance pas :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// Extrait de jqGrid 4.4.0
$("input, select, textarea",cc).bind("keydown",function(e) {
				    
					if (e.keyCode === 27) {
						if($("input.hasDatepicker",cc).length >0) {
							if( $(".ui-datepicker").is(":hidden") )  { $($t).jqGrid("restoreCell",iRow,iCol); }
							else { $("input.hasDatepicker",cc).datepicker('hide'); }
						} else {
							$($t).jqGrid("restoreCell",iRow,iCol);
						}
					} //ESC
					if (e.keyCode === 13) {
						$($t).jqGrid("saveCell",iRow,iCol);
						// Prevent default action
						return false;
					} //Enter
					if (e.keyCode === 9)  {
						if(!$t.grid.hDiv.loading ) {
							if (e.shiftKey) {$($t).jqGrid("prevCell",iRow,iCol);} //Shift TAb
							else {$($t).jqGrid("nextCell",iRow,iCol);} //Tab
						} else {
							return false;
						}
					}
					e.stopPropagation();
				});
Le fait que ça marche sous certains postes IE8 et pas d'autres est-ce qui m'agace le plus (parce avoir des problèmes avec IE ça j'ai l'habitude)

Ca parle à quelqu'un ?


PS: j'ai essayé un bête évènement onkeydown à l'ancienne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
document.getElementById('trux').onkeydown = function (e) { 
		 		if (window.event) e = window.event;
                var touche = window.event ? e.keyCode : e.which;
                 if (touche==13)  alert('ffff'); else alert(touche);
                }
Sous les postes à problème, ça ne marche pas mieux que du jQuery, ca affiche les alertes pour les autres touches, mais pas pour Entrée...