IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Rendre le focus a la fenetre


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 277
    Par défaut Rendre le focus a la fenetre
    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.

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Bonjour,
    essaye avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    window.event.keyCode==27
    A+

  3. #3
    Membre très actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 277
    Par défaut Code touche Esc
    Re,

    Quand je fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    window.status="code touche="+touche;
    Il me met code touche = 0 quand j'appuie sur Esc dans la barre de status.
    C'est ce qui me parait bizarre.

    Mais window.focus(this); est bien appelé, mais n'a aucun effet.

    Cordialement.

  4. #4
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    C'était juste pour te dire que le code de la touche ESC est 27 et non 0 ...
    ==>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     if (touche == 27 ) // Si on tape sur ESC
    A+

  5. #5
    Membre très actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 277
    Par défaut Probleme onKeyPress ?
    Re,

    En remplacant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <body onkeypress="javascript:clavier(event)">
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <body onkeydown="javascript:clavier(event)">
    J'obtient maintenant bien 27 quand j'appuie sur Esc, mais

    N'a aucun effet, le focus reste sur ma zone de texte.

    Cordialement.

  6. #6
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Citation Envoyé par Lovmy
    N'a aucun effet, le focus reste sur ma zone de texte.
    Le focus étant déjà sur la fenêtre (puisque l'input en fait partie), ça semble normal.
    Donne le focus à un autre élément (non modifiable, par ex.) de ta fenêtre ...

    A+

  7. #7
    Membre très actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 277
    Par défaut Sous IE ca marche
    Re,

    Ce bout de code:

    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
    <script>
             var zoneTexte = false;
             function clavier(e)
             {
                var touche=(window.Event)?e.which:e.keyCode;
                if( touche != 9 && !zoneTexte )
                {
                   touche = String.fromCharCode(touche)
                   switch(touche)
                   {
                      case 'a':
                         alert( "touche A" );
                         break;
                      default:
                         alert( "["+touche+"]" );
                         break;
                   }
                }
                else
                {
                   if( touche == 27 )
                      window.focus();
                }
             }
          </script>
       </head>
       <body onkeydown="javascript:clavier(event)">
    fonctionne sous IE mais pas sous FireFox. Le "if( touche != 9 &&" c'est pour eviter les boite d'alerte lors d'appuie sur la touche Tab.

    Sur quel type d'element puis-je faire passer mon focus, j'ai essayer un <input type="hidden"> mais ca ne marche pas, mon focus ( sous Firefox ) reste desesperement sur ma zone de texte.

    Cordialement.

  8. #8
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Un input "hidden" étant ... caché, c'est normal.
    Essaye avec un élément affiché ...

    A+

  9. #9
    Membre très actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 277
    Par défaut Oui mais
    Ca ne m'arrange pas trop, mon but étant justement qu'aucun élement visible n'ai le focus.

    Cordialement.

  10. #10
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Par défaut
    Salut,

    Tu peux éventuellement styler cet élément pour que l'utilisateur ne puisse
    le voir, mais sans le rendre invisible (techniquement parlant)

    Tu peux le déplacer avec un position absolute avec un top négatif
    ou le réduire à 1px * 1px avec un bordure de 1px de la même couleur de fond.

    A tester.

Discussions similaires

  1. Pb de focus sur une fenetre modal
    Par TheReturnOfMuton dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 24/04/2007, 11h43
  2. Rendre le focus à champ de saisie après une action
    Par Gothico dans le forum WinDev
    Réponses: 3
    Dernier message: 24/10/2006, 16h21
  3. donner le focus sur la fenetre d application active
    Par nick974 dans le forum Delphi
    Réponses: 1
    Dernier message: 02/07/2006, 12h11
  4. donner le focus a une fenetre
    Par HiT dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 03/05/2006, 14h59
  5. comment rendre impossible de resizer une fenetre?
    Par HiT dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 02/04/2006, 17h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo