Javascript : détecter la touche F2

Javascript : détecter la touche F2 - HTML/CSS - Programmation

Marsh Posté le 19-07-2006 à 14:56:02    

Bonjour !
 
Voila, je viens de développer une petite fonction lancée dans mon body lors d'un évènement onkeypress afin d'écouter les touches tapées.
 
Ce que je souhaites faire, c'est effectuer une opération particulière lorsque l'on tape F2.
 
La bonne nouvelle, cela fonction parfaitement bien sous Firefox.
La mauvaise nouvelle, avec IE je n'arrive à détecter que les touches ASCII, les touches FXX ne sont pas détectées.
 
J'aurais voulu savoir si quelqu'un avait une solution pour pallier à ce problème.
 
Merci beaucoup !!
 
Mon body :
<body onkeypress="getAction(event.keyCode,event.shiftKey);">
 
Voici ma fonction getAction :
 
function getAction(key, shift)
{
   if(shift)
   {
       // Si la touche vaut 113 (F2) + shift on appelle copyToAll
       if(key==113) copyToAll(selectedField, nbFields);
   }
   else
   {
       // Si la touche vaut 113 (F2) on appelle copyToNext
       if(key==113) copyToNext(selectedField);
   }
   
   // PROVISOIRE : pour vérifier le code récupéré
   alert(key);
}

Reply

Marsh Posté le 19-07-2006 à 14:56:02   

Reply

Marsh Posté le 19-07-2006 à 15:11:15    

tu peux pas récupérer les touches FXX sur un onkeypress, tu dois attendre le onkeyup.
edit: ou anticiper sur le onkeydown
 
Et attention aux touches de fonction qui declenche des evenements genre F1->aide, F3->historique sous IE( mais bon tu peux te débrouiller pour que cela ne le fasse pas)


Message édité par anapajari le 19-07-2006 à 15:18:55
Reply

Marsh Posté le 20-07-2006 à 09:30:49    

Merci beaucoup, ça fonctionne impec.
J'utilise F2 et Shift+F2 pour ems raccourcis, sans soucis !!

Reply

Marsh Posté le 14-01-2008 à 18:24:48    

Dis voir, c'est du 100% IE d'utiliser event... c'est which sous FF, c'est ca ?

Reply

Marsh Posté le 14-01-2008 à 20:29:11    

Voici une version oecuménique :

<html>
<head>
<script>
function checkF2 (field, evt) {
  var keyCode =  
    document.layers ? evt.which :
    document.all ? event.keyCode :
    document.getElementById ? evt.keyCode : 0;
  if (keyCode == 113)
     window.status = "Touche F2";
  else
     window.status = "Autre touche. Code = " + keyCode + ".";
  return true;
}
</script>
</head>
<body>
Cliquer dans la texte area puis appuyer sur des touches, et regarder dans la barre de statut en bas.
<form name="formName">
<textarea name="aTextArea" rows="5" cols="20" wrap="soft"
          onkeydown="return checkF2(this, event)"
>
</textarea>
</form>
</body>
</html>


Message édité par olivthill le 14-01-2008 à 20:31:18
Reply

Marsh Posté le 14-01-2008 à 22:33:37    

mais paye ton caca :S

 

au lieu de faire

Code :
  1. var keyCode = 
  2.     document.layers ? evt.which :
  3.     document.all ? event.keyCode :
  4.     document.getElementById ? evt.keyCode : 0;


tu peux tres bien faire et c'est encore mieux en te basant sur les objets

 
Code :
  1. var keyCode = 
  2.     evt.which ? evt.which :
  3.     evt.keyCode ? evt.keyCode : 0;


Message édité par gatsu35 le 15-01-2008 à 13:05:20
Reply

Marsh Posté le 15-01-2008 à 09:44:15    

Est ce vraiment un code compatible Firefox ? Il semble que non...
 
De plus, qu'est ce que c'est que event ???? quelle difference avec evt qui nous vient des parametres ?
 
--------------
EDIT :
 
OK, j'ai trouvé, c'est window.status  qui n'est pas compatible Firefox, le reste marche


Message édité par NounouRs le 15-01-2008 à 09:48:14
Reply

Marsh Posté le 15-01-2008 à 13:05:43    

wala c'est corrigé
j'ava trompé dans mon code, donc look juste au dessus de ton dernier msg =)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed