Focus sur un champ en ajax

Résolu
amateurjava Messages postés 88 Date d'inscription vendredi 8 octobre 2004 Statut Membre Dernière intervention 12 octobre 2009 - 2 avril 2008 à 17:16
nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 - 25 avril 2008 à 11:04
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

amateurjava Messages postés 88 Date d'inscription vendredi 8 octobre 2004 Statut Membre Dernière intervention 12 octobre 2009
25 avril 2008 à 09:27
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 !!
3
nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
2 avril 2008 à 18:49
ça dépend d'ou tu a placé ton script, serai il possible de voir le script ???

Si t'a besoin d'aide, MP !!!
0
amateurjava Messages postés 88 Date d'inscription vendredi 8 octobre 2004 Statut Membre Dernière intervention 12 octobre 2009
3 avril 2008 à 09:07
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 !!
0
nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
25 avril 2008 à 09:16
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 !!!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
25 avril 2008 à 11:04
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 !!!
0
Rejoignez-nous