Focus sur un champ en ajax [Résolu]

Signaler
Messages postés
88
Date d'inscription
vendredi 8 octobre 2004
Statut
Membre
Dernière intervention
12 octobre 2009
-
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
-
Bonjour,

le cas de figure est le suivant :

J'ai un
à l'interieur d'une page qui est dans un premier temp style.visibility="hidden";
J'affiche une page formulaire dans ce div avec un script ajax :
....
 xhr_object.onreadystatechange = function() {
       if(xhr_object.readyState == 4) {
         document.getElementById('
').innerHTML = xhr_object.responseText; 
}
.....
tout se passe bien

Le pb, c'est que je dois donner le focus sur un champ de ce formulaire.
donc j'ai incorporé un script (document.getElementById('nomdemonchamp').focus(); aprés avoir rechargé la page.
Or cela fonctionne au premier chargement du formulaire, mais ensuite le focus ne se fait plus.
Par contre, si je change la page et que je reviens dessus, ça refonctionne.

Comment faire.
Merci de votre aide

Faites vous plaisir !!

5 réponses

Messages postés
88
Date d'inscription
vendredi 8 octobre 2004
Statut
Membre
Dernière intervention
12 octobre 2009

Je te rassure depuis le temp j'ai trouvé..
Lorsque je fermais le div je faisais document.getElementById('contenu_client').style.visibility="hidden";
donc en fait la page restait tjs affichée mais pas visible, donc pas de reload de la page
(je pensais que le reload se faisait quand même puisque j'appelait la page à se charger avec document.getElementById('contenu_client').innerHTML = xhr_object.responseText, mais le serveur étant malin, il ne la rechargeait pas car elle était deja affichée mais invisible)
par contre je ne m'explique pas que malgré tout, même si la page était affichée et qu'il n'y avait pas de reload, l'instruction de focus ne fonctionnait pas...

Donc pour contourner, j'ai fait, avant la fermeture,
document.getElementById('contenu_client').innerHTML='vide.php'; (vide.php étant une page vide).

Donc quand je réaffiche ma page, je fais un réel reload, donc le focus marche.

Faites vous plaisir !!
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
35
ça dépend d'ou tu a placé ton script, serai il possible de voir le script ???

Si t'a besoin d'aide, MP !!!
Messages postés
88
Date d'inscription
vendredi 8 octobre 2004
Statut
Membre
Dernière intervention
12 octobre 2009

Le script qui remplis le div :

function afficher_client(url){
 document.getElementById('contenu_client').style.visibility="visible";
 var xhr_object = null;
  if(window.XMLHttpRequest) // Firefox
    xhr_object = new XMLHttpRequest();
    else if(window.ActiveXObject) // Internet Explorer
       xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
    else { // XMLHttpRequest non supporté par le navigateur
       alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
       return;
    }




 xhr_object.open('GET',url, true);
 xhr_object.onreadystatechange = function() {
       if(xhr_object.readyState == 4) {
         document.getElementById('contenu_client').innerHTML = xhr_object.responseText; 
   donner_focus('clt_nom');
           }
   
               }
 xhr_object.send(null);
}

Le script de focus :

function donner_focus (chp){
 document.getElementById(chp).focus();
}

Sachant que quand on ferme le div, on fait uniquement :
document.getElementById('contenu_client').style.visibility ="hidden";

Je penses que c'est ce qui fait que le script ne fonctionne qu'une fois, puisque la page est déjà chargée dans le div...
Pourtout en relançant le script, cela devrait recharger une nouvelle fois la page.

Faites vous plaisir !!
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
35
ba je ne vois pas ou est le pb, sinon, si tu veus donner le focuse a ton div toute les x secondes fais un setInterval ou un setTimeOut, c'est beaucoup plus simple !!!

Si t'a besoin d'aide, MP !!!
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
35
ok, merci d'avoir mis la réponse et merci de la mettre en réponse accèpté, merci !!!

Si t'a besoin d'aide, MP !!!