Bonjour,

J'ai une page web simple, avec une zone de saisie. Actuellement quand le focus n'est pas sur cette zone et que l'on tape sur une touche, elle s'affiche dans une boite d'alerte, et quand le focus est sur la zone de texte, les caracteres entrés au clavier s'affiche dedant. Ce qui me pose probleme, c'est que je voudrais, dans l'optique du gestion 100% au clavier, que quand l'utilisateur tape sur Esc alors que le focus est sur la zone de saisie, cette derniere perd le focus et la fenetre gagne ce focus pour qu'ensuite, lors de saisie clavier, ce soient les messages d'alertes qui apparaissent. Actuellement il faut taper plusieurs fois sur Tab pour enlever le focus de la zone de saisie et le mettre sur la fenetre. J'ai remarqué que pour certaine touche, dont Esc,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
var touche=(window.Event)?e.which:e.keyCode;
renvoi 0, j'ai donc essayé de faire
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
if( touche == 0 ) // Si on tape sur ESC
   window.focus(this);
mais sans succes.
Voici le code complet:
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
27
28
<html>
   <head>
      <title>Test focus</title>
      <script>
         var zoneTexte = false;
         function clavier(e)
         {
            var touche=(window.Event)?e.which:e.keyCode;
            if( !zoneTexte )
            {
               touche = String.fromCharCode(touche)
               alert( "touche="+touche );
            }
            else
            {
               window.status="code touche="+touche;
               if( touche == 0 ) // Si on tape sur ESC
                  window.focus(this);
            }
         }
      </script>
   </head>
   <body onkeypress="javascript:clavier(event)">
      <form action="#" method="GET">
         zone de texte: <input type="text" onFocus="javascript:zoneTexte=true" onBlur="javascript:zoneTexte=false">
      </form>
   </body>
</html>
Avez-vous une idée de comment faire ?

Cordialement.