Récuperation du Focus sur un Input apres mise a jour du div via Ajax
cs_izy
Messages postés4Date d'inscriptionlundi 29 mai 2006StatutMembreDernière intervention18 août 2007
-
16 août 2007 à 15:09
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 2013
-
18 août 2007 à 12:27
Bonjour, mon problème est le suivant je bosse actuellement sur une page qui fais des ajoute/suppression/motification dans une base mysql et j'aurais besoin que apres chaque envoi au serveur via ajax à l'aide de la méthode Ajax.Updater d'un div qui est en gros le contenu du site a mettre a jour le focus revienne sur un champ input de cette fameuse div contenant le contenu modifier et qui était déjà presente elle avant la mise a jour.
J'ai bien essayer mais en vint de mettre en javascript document.getElementById('input').Focus(); dans le code php me permettant l'affichage de cette div mais cela ne fonctionne que la premier e fois que le div a été charger mais à la premiere soumission le Focus est perdu
J'espère avoir été clair et vous remerci d'avant pour vos reponse.
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 16 août 2007 à 16:03
si tu met à jour ce div avec ajax,
il faut attendre qu'ajax fasse son boulot ( transmission de la demande,
traitement coté serveur, transmission de la réponse ... )
tu parles de la méthode (??) Ajax.Updater
tu dois utiliser ce qu'on appelle ( de manière abusive ! ) un framework
c'est "sûrement" une simple fonction ( en javascript ), qui "doit" contenir
une ligne du style
xml .onreadystatechange= function()...
dans cette fonction, on "doit" tester xml .readyState == 4
ce qui veut dire qu'Ajax ( xmlhttprequest ) a répondu.
c'est là que tu peux mettre le focus()
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 16 août 2007 à 16:06
ou le framework ne rend la main à ton script que
lorsque la réponse d'ajax est revenu ( je ne peux pas savoir )
dans ce cas met le focus() après l'appel de
Ajax.Updater
cs_izy
Messages postés4Date d'inscriptionlundi 29 mai 2006StatutMembreDernière intervention18 août 2007 16 août 2007 à 23:24
J'ai essayer comme tu me l'avais conseillé de redonner le focus juste apres l'appel à Ajax.updater mais en vint je ne recupere pas le focus. Aurais tu une autre idée pour moi?
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 17 août 2007 à 06:24
>>redonner le focus juste apres l'appel à Ajax.updater
donc, soit tu ne fais pas tout à fait comme il faut
soit la fonction te rend la main avant le retour de xmlhttprequest
>>Aurais tu une autre idée pour moi?
je me cite :
...une ligne du style
xml .onreadystatechange= function()...
dans cette fonction, on "doit" tester xml .readyState == 4
ce qui veut dire qu'Ajax ( xmlhttprequest ) a répondu.
c'est là que tu peux mettre le focus()...
cs_izy
Messages postés4Date d'inscriptionlundi 29 mai 2006StatutMembreDernière intervention18 août 2007 18 août 2007 à 11:38
Je suis vraiment désolé d'abuser de votre gentillesse mais vrai j ai un problème car je suis parti regarder le code du framework et je ne trouve pas la ligne dont vous me parliez au niveau de l updater:
updateContent: function() {
var receiver = this.container[this.success() ? 'success' : 'failure'];
var response = this.transport.responseText;
if (!this.options.evalScripts) response = response.stripScripts();
if (receiver = $(receiver)) {
if (this.options.insertion)
new this.options.insertion(receiver, response);
else
receiver.update(response);
}
if (this.success()) {
if (this.onComplete)
setTimeout(this.onComplete.bind(this), 10);
}
}
});
et je voudrais savoir si il était possible de m'aiguiller encore une fois.
Si jamais vous avez besoin de plus d'information concernant le fichier contenant se code vous pouvais le telecharger sur http://www.prototypejs.org/download ou bien alors je peux vous le copier coller ici
Encore merci pour vos réponse et désolé de vous redéranger.
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 18 août 2007 à 12:27
>>désolé de vous redéranger.
y'a pas d'dérangement !
>>prototypejs
ah, c'est lui. je n'avais jamais regardé.
ça me semble bien compliqué, mais
ce doit être normal compte tenu des fonctionnalités.
vous êtes obligé d'utiliser pour AJAX ?
oui : recherchez les lignes ( doit pas y en avoir une foultitude )
contenant
onreadystatechange ? peut-être...
non : un "échange ajax", c'est "assez simple"
il existe de nombreux exemples sur CodesSources ( et même ailleurs )
comme de nombreuses explications/tutos.
j'ai sous la main, alors, un ch'tit début :
function xmlhttp()
{ var x;
try { x = new ActiveXObject("Microsoft.XMLHTTP"); }
catch (e) { try { x = new ActiveXObject("Msxml2.XMLHTTP"); }
catch (e) { try { x = new XMLHttpRequest(); }
catch (e) { x=false; }
}
}
return x;
}
function appel() // appel au script sur le serveur, peut-être remplaçant votre Ajax.updater ?
{ var xml = xmlhttp();
if(!xml)
{ alert("XmlHttpRequest non supporté"); }
else { xml.onreadystatechange = function()
{ if(xml.readyState==4)
{ ici on peut gérer xml.responseText ou xml.responseXML
c'est la réponse du serveur.
}
}
// soit méthode get :
xml.open("GET", "url de la page?paramètres