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

Signaler
Messages postés
112
Date d'inscription
jeudi 31 août 2006
Statut
Membre
Dernière intervention
3 février 2011
-
Messages postés
13619
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
-
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.

9 réponses

Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
13
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)
Messages postés
112
Date d'inscription
jeudi 31 août 2006
Statut
Membre
Dernière intervention
3 février 2011

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...
Messages postés
112
Date d'inscription
jeudi 31 août 2006
Statut
Membre
Dernière intervention
3 février 2011

Sorry

Voici mon champ texte :
Messages postés
13619
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
32
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]         
Messages postés
112
Date d'inscription
jeudi 31 août 2006
Statut
Membre
Dernière intervention
3 février 2011

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.

...
Messages postés
13619
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
32
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...
@+
Messages postés
13619
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
32
ben zut alors...
je n'avais jamais été confronté à ce souci....
@petoleteam : curieux d'avoir à agir ainsi, non ?
         Bul [mon Site] [M'écrire]         
Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
13
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)
Messages postés
13619
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
32
>>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]