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 :

désactivation de touche tab


Sujet :

JavaScript

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    198
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2008
    Messages : 198
    Points : 96
    Points
    96
    Par défaut désactivation de touche tab
    Bonjour, j'ai un souci et je vous l'explique:

    J'ai un input text qui permet d'entrer un courriel.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <input name="txtCourriel" type="text" size="20" maxlength="50"  onblur="if (verifCourriel() != false){ChangeClass(this,'oblCourriel')};" >
    La function verifCourriel permet de vérifier si le courriel est valide.

    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
     
    function verifCourriel(){
         var regex = /^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i; 
    <!-- Regex pour valider un e-mail -->
         var result = true;
         if (document.forms['formulaire'].elements['txtCourriel'].value != ''){
              champ = document.forms['formulaire'].elements['txtCourriel'].value;
        	  if (!regex.test(champ)){
        	       document.forms['formulaire'].elements['txtCourriel'].value = '';
          	       alert('Veuillez choisir un courriel valide.');
          	       document.forms['formulaire'].elements['txtCourriel'].focus();
          	       result =  false;
        	 }
         }
         return result;
    }

    Le problème :
    Quand un utilisateur entre sont e-mail, appui sur TAB pour changer de case et que l'adresse e-mail n'est pas valide, le focus change quand même de case.

  2. #2
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Points : 4 835
    Points
    4 835
    Par défaut
    dans ce cas ajoute onblur = perd le focus
    puis une méthode vérifiant le mail , si le mail n'est pas bon , redonne le focus a ce champs

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    198
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2008
    Messages : 198
    Points : 96
    Points
    96
    Par défaut
    exactement ce que je fais ??

  4. #4
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Points : 4 835
    Points
    4 835
    Par défaut
    excuse moi un peu fatigué ^^

    voila ce que j'ai testé et qui fonctionne :

    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
    29
    30
    31
    32
    33
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Document sans nom</title>
    <script type="text/javascript">
    function verifCourriel(){
         var regex = /^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i; 
    <!-- Regex pour valider un e-mail -->
         var result = true;
         if (document.forms['formulaire'].elements['txtCourriel'].value != ''){
              champ = document.forms['formulaire'].elements['txtCourriel'].value;
        	  if (!regex.test(champ)){
        	       document.forms['formulaire'].elements['txtCourriel'].value = '';
          	       //alert('Veuillez choisir un courriel valide.');
          	       document.forms['formulaire'].elements['txtCourriel'].focus();
          	       result =  false;
        	 }
         }
         return result;
    }
     
    </script>
    </head>
     
    <body>
    <form name="formulaire">
    <input name="txtCourriel" type="text" size="20" maxlength="50"  onblur="if (verifCourriel() != false){ChangeClass(this,'oblCourriel');}" >
    <input type="text" onfocus="document.forms['formulaire'].elements['txtCourriel'].focus();" />
    </form>
    </body>
    </html>
    pas eu le temps de creuser pourquoi le focus(); ne marche pas mais je pense qu'il s'agit de l'ordre de propagation des évènements . . .
    donc en lui redonnant le focus a partir d'un autre champs ça marche

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    198
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2008
    Messages : 198
    Points : 96
    Points
    96
    Par défaut
    ça fonctionne si l'adresse est invalide mais quand elle est valide le tab ne fonctionne pas??

  6. #6
    Rédacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Points : 2 757
    Points
    2 757
    Par défaut
    Citation Envoyé par le_chomeur Voir le message
    pas eu le temps de creuser pourquoi le focus(); ne marche pas mais je pense qu'il s'agit de l'ordre de propagation des évènements . . .
    donc en lui redonnant le focus a partir d'un autre champs ça marche
    pour moi ça marche bien sous IE6 et Opera (mais sous FF le focus n'est pas rendu sur le champ mail en cas d'erreur)

    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Document sans nom</title>
    <script type="text/javascript">
    function verifCourriel(){
         var regex = /^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i; 
    <!-- Regex pour valider un e-mail -->
         var result = true;
         if (document.forms['formulaire'].elements['txtCourriel'].value != ''){
              champ = document.forms['formulaire'].elements['txtCourriel'].value;
        	  if (!regex.test(champ)){
        	       document.forms['formulaire'].elements['txtCourriel'].value = '';
          	       document.forms['formulaire'].elements['txtCourriel'].focus();
          	       result =  false;
        	 }
         }
         return result;
    }
     
     function ChangeClass(o,css)
     {
      o.className = css;
     }
     
    </script>
    <style>
      .oblCourriel
      {
        color : green;
      }
    </style>
    </head>
     
    <body>
    <form name="formulaire">
    <input name="txtCourriel" type="text" size="20" maxlength="50"  onblur="if (verifCourriel() != false){ChangeClass(this,'oblCourriel');}" >
    <input type="text" />
    </form>
    </body>
    </html>

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    198
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2008
    Messages : 198
    Points : 96
    Points
    96
    Par défaut
    aarrrrggg si seulement sa pourrais fonctionner avec FF

    merci de la réponse

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    198
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2008
    Messages : 198
    Points : 96
    Points
    96
    Par défaut
    Il ne serais pas plus simple de faire quelque chose du genre :

    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
     
    <input name="txtCourriel" type="text" size="20" maxlength="50" onkeypress="refuserToucheEntree(event);" >
     
     
    function refuserToucheEntree(event){
        // Compatibilité IE / Firefox
        if(!event && window.event) {
            event = window.event;
        }
        // IE
        if(event.keyCode == 9) {				
            event.returnValue = false;
            event.cancelBubble = true;
        }
        // DOM
        if(event.which == 9) {
            event.preventDefault();
            event.stopPropagation();
        }
    }

    Marche pas avec IE

  9. #9
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Points : 4 835
    Points
    4 835
    Par défaut
    bonjour
    bon aujourd'hui ça va mieux ( hier je m'excuse je t'ai donné des moitiés de réponse . . . )

    je cherche encore pourquoi en donnant le focus au champs a partir d'une méthode cela ne marche pas alors que comme vu dans l'exemple que j'ai donné , en le donnant directement sur un onfocus d'un autre élément cela fonctionne . . . je cherche je cherche

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Désactiver les touches Alt+TAB en plein écran
    Par Eric_M dans le forum VB.NET
    Réponses: 6
    Dernier message: 04/06/2010, 21h54
  2. Désactiver la touche TAB dans un JTextComponent
    Par doobinay dans le forum Composants
    Réponses: 0
    Dernier message: 04/05/2009, 17h12
  3. Réponses: 3
    Dernier message: 25/09/2007, 06h47
  4. Edit comment autorisé la touche TAB ?
    Par laurent_h dans le forum Windows
    Réponses: 2
    Dernier message: 11/04/2004, 14h11
  5. Désactiver les touches F1, F2, F3, F4, F5 dans IE
    Par ZiZouJH dans le forum Flash
    Réponses: 7
    Dernier message: 17/02/2003, 09h59

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