Pb : Redonner le focus à un champ texte suite à une erreur. [Résolu]

Messages postés
112
Date d'inscription
jeudi 31 août 2006
Statut
Membre
Dernière intervention
3 février 2011
- - Dernière réponse : cs_bultez
Messages postés
13619
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
- 29 oct. 2008 à 09:15
Bonjour,

Je cherche à valider le contenu de mes champs textes... (ps, suis débutant en javascript)

L'objectif est d'effectuer une vérification sur la chaine de caractère contenue dans ce champ texte

Dans le cas ou la vérification n'est pas conforme, je souhaite afficher une alerte et redonner le focus à ce champ.

Voici le code. (pour tester la fonction je n'affiche pas le traitement)

<script language="javascript" type="text/javascript">
function verif_champ(champ)
        {   
            ...traitement
.. si faux :
alert('Message');
document.GetElementById(champ).focus();
        }
</script>      

Voici mon champ texte :

Bien entendu, si je vous contacte, c'est que ca ne fonctionne pas...

Merci à vous pour votre aide précieuse.
Afficher la suite 

9 réponses

Meilleure réponse
Messages postés
3435
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
9
3
Merci
Bonjour,
J'ai rencontré, en son temps, ce problème
et je l'ai résolu de la façon suivante
Création d'une fonction
//---------------------------------
function
Obj_SetFocus( obj_, flag_){
  var Obj = null;
  if(
typeof(obj_)=='object')
    Obj = obj_;
  else
    Obj =
document.getElementById( obj_);
  if( Obj && flag_)

    Obj.focus();
  else
    setTimeout( "Obj_SetFocus('" +obj_ +"',
1)", 100);
}
Appel de la fonction comme suit
//-------------------------
function
verif_champ( champ){
  alert( champ.id);
  Obj_SetFocus( champ.id);

}

;O)

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 121 internautes nous ont dit merci ce mois-ci

Commenter la réponse de PetoleTeam
Messages postés
112
Date d'inscription
jeudi 31 août 2006
Statut
Membre
Dernière intervention
3 février 2011
3
Merci
Merci beaucoup... Ca fonctionne sur Ie 7 et sur FF 3.0 (pas essayé le reste.)

Tu viens de rendre un homme heureux... (t'imagine même pas).

La base étant là...

Je vais tansmettre d'autre variables à la fonction verif_champ() afin d'avoir une fonction complète.

Dans la mesure du possible, une fois le script final terminé, j'en ferais profiter la communauté.

Merci de ta contibution...

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 121 internautes nous ont dit merci ce mois-ci

Commenter la réponse de roymatthieu
Messages postés
112
Date d'inscription
jeudi 31 août 2006
Statut
Membre
Dernière intervention
3 février 2011
0
Merci
Sorry

Voici mon champ texte :
Commenter la réponse de roymatthieu
Messages postés
13619
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
26
0
Merci
bonjour,

si tu appelles avec this, dans la fonction, il ne faut pas utiliser document.getElementById
    ou je ne sais quoi.

function verif_champ(champ)
{ contrôle de champ.value
  si errreur : champ.focus();
}

verif_champ(this);

Cordialement

          Bul [mon Site] [M'écrire]         
Commenter la réponse de cs_bultez
Messages postés
112
Date d'inscription
jeudi 31 août 2006
Statut
Membre
Dernière intervention
3 février 2011
0
Merci
Merci de ton aide mais cela ne fonctionne toujours pas...

L'alerte s'affiche mais le le focus n'est pas donné au champ.

Par contre si j'utilise onmouseover à la place de onblur -> il n'y a pas de problème.

Je ne comprends pas pourquoi ca ne fonctionne pas avec onblur ni onchange.

...
Commenter la réponse de roymatthieu
Messages postés
13619
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
26
0
Merci
ah.. crotte de biques....
je n'ai testé qu'avec IE avec qui ça marche.
faut regarder ce qu'il manque pour faire
fonctionner avec FF.
si je trouve...
@+
Commenter la réponse de cs_bultez
Messages postés
13619
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
26
0
Merci
ben zut alors...
je n'avais jamais été confronté à ce souci....
@petoleteam : curieux d'avoir à agir ainsi, non ?
         Bul [mon Site] [M'écrire]         
Commenter la réponse de cs_bultez
Messages postés
3435
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
9
0
Merci
Bonjour,
J'ai rencontré ce problème lors du
développement de ma source sur RECHERCHE et COLORISATION
Une
explication...HUM!!!
un petit bout de code pour tester sous IExplorer et FireFox




var k =0;
//------------------------

function Write_Info( txt_){
  var Obj =
document.getElementById( 'D_INFO');
  var szTmp = Obj.innerHTML;

  Obj.innerHTML = ++k +' ' +txt_ +'
' +szTmp;
}
//------------------
function Fct_0( id_){

  Write_Info( id_);
  alert( id_);
}
//------------------
function Fct_1( id_){

  Write_Info( id_);
  alert( id_);
}














Le test...
1/ click sur INPUT_1
2/ click sur INPUT_2

Observations...
Sous FireFox sans relâcher la souris lorsque l'on clique
sur l'INPUT_0 il apparaît des choses différentes que si le click est relaché, le
onclick n'est effectif qu'au relâché de la souris.

Sous IExplorer le onclick n'apparaît même pas...

IExplorer possède un objet événement
unique, event, qui est commun à tous les
objets de la page alors que FireFox en crée un
par objet quand il se déclenche.

C'est donc un problème de gestion des
événements, hiérarchisation, qui se fait différemment, la propagation est stoppée sous IExplorer mais pas sous FireFox.

Il y a surement moyen de les rendre
identique en réaction en gérant la propagation ou autre, mais bon...

C'est pourquoi la solution de mettre un setTimeout avec un flag rétabli l'équilibre...

Voila ce que je peux en dire, je n'ai pas poussé plus loin mes
investigations, la fonction marchant bien pour ce que j'avais à en faire.

Un jour peut être pour le FUN!
;O)
Commenter la réponse de PetoleTeam
Messages postés
13619
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
26
0
Merci
>>IExplorer possède un objet événement unique, event, qui est commun
>>à tous les objets de la page alors que FireFox en crée un par objet
>>quand il se déclenche.
>>C'est donc un problème de gestion des événements, hiérarchisation,
>>qui se fait différemment,
merci pour l'explication.
          Bul [mon Site] [M'écrire]         
Commenter la réponse de cs_bultez