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 :
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)
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(); });
Ca parle à quelqu'un ?
PS: j'ai essayé un bête évènement onkeydown à l'ancienne :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...
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); }
Partager