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 :

Retour du focus sur un champ après onBlur


Sujet :

JavaScript

  1. #1
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations forums :
    Inscription : Février 2012
    Messages : 8
    Points : 2
    Points
    2
    Par défaut Retour du focus sur un champ après onBlur
    Bonjour,

    J'ai une fonction qui est activée par onBlur lorsque je quitte un champ input text .

    Cette fonction effectue des contrôles sur la saisie faite dans ce champ.
    J'aimerai pouvoir remettre le focus sur ce champ si la saisie n'est pas conforme à ce que j'attends.

    J'ai mis un monChamps.focus(); avant de quitter la fonction mais celui-ci n'a pas d'effet, le focus passe au champ suivant.
    Quelqu'un pourrait-il me dire comment parvenir à mes fins ?
    Merci d'avance

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Quelqu'un pourrait-il me dire comment parvenir à mes fins ?
    En nous montrant ton code par exemple ?

  3. #3
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations forums :
    Inscription : Février 2012
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    Voilà ma fonction :

    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
     
    function ctrlScoreIdJoueur(champ) {
    	var valeur = champ.value;
    	if (estVide(valeur)) {
    		document.frmSaisieScore.message.value = 'Renseignez le n° du joueur S.V.P';
    		champ.style.color = "Red";
    		champ.focus();
    		return false;
    	} else if (!estEntier(valeur)) {
    		document.frmSaisieScore.message.value = 'Ne saisissez que des chiffres S.V.P';
    		champ.style.color = "Red";
    		champ.focus();
    		return false;
    	} else {
    		champ.style.color = "Green";
    		document.frmSaisieScore.message.value = '';
    		return true;
    	}
    }
    et son appel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <p>1er joueur : <input type='text' name='idJoueur1' value='<?php echo "$idJoueur1"?>' <?php if ($etat == 2) {echo 'disabled';}?> maxlength=3 size=5 onblur = "ctrlScoreIdJoueur(this)" />
    Les messages et couleurs fonctionnent comme attendu

  4. #4
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations forums :
    Inscription : Février 2012
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    Bonjour,

    J'ai trouvé un vieux post ou une personne avait le même problème que moi, mais aucune solution n'a été trouvée pour rendre le focus sur le même champ après une fonction déclenchée par onBlur.
    Voici le lien :
    http://www.developpez.net/forums/d94...mp-formulaire/
    Merci

  5. #5
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 110
    Points : 44 929
    Points
    44 929
    Par défaut
    Bonsoir,
    essaies avec un setTimeout
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    setTimeout( function(){
        champ.focus();
      },200);

  6. #6
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations forums :
    Inscription : Février 2012
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    Le principe est-il de lancer le focus() après la fin d'exécution de la fonction de contrôle déclenchée par la perte du focus onBlur ?
    Je testerai cela ce soir.
    Merci

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 5
    Points : 7
    Points
    7
    Par défaut
    Instinctivement je te proposerais:

    Code js : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    input.onblur = function(e){
         if( true ){ // code qui vérifie si le champ est valide
              e.preventDefault(); // empêche le blur de se produire
              this.focus(); // redonne le focus à ce champ
          }
    }

    Tu auras ptet un souci selon l'ordre avec lequel le navigateur appelle blur et focus lorsque tu sors de l'input.

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2012
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    +1 pour le setTimeOut

    Par contre, c'est le genre d'action qu'il vaut mieux éviter d'utiliser dans une page (ou compléter par un interrupteur). Si 2 champs contiennent ce contrôle et que ton utilisateur quitte le premier pour aller dans le second, tu entres dans une boucle infinie.

Discussions similaires

  1. Réponses: 1
    Dernier message: 19/11/2012, 15h18
  2. Bloquer le focus sur un champ
    Par Ric21 dans le forum IHM
    Réponses: 9
    Dernier message: 19/03/2007, 17h26
  3. Comment définir un focus sur un champ (ex:login) ?
    Par vandeyy dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 30/01/2007, 11h05
  4. Focus sur un champ de formulaire au chargement de la page
    Par feanor11 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 01/11/2006, 20h43
  5. mettre le focus sur le champ approprié
    Par discogarden dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 06/07/2005, 16h59

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