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,
var touche=(window.Event)?e.which:e.keyCode;
renvoi 0, j'ai donc essayé de faire
1 2
| if( touche == 0 ) // Si on tape sur ESC
window.focus(this); |
mais sans succes.
Voici le code complet:
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.
Partager