Mille excuses!
Je recommence.
J'ai avancé sur ce projet. j'ai juste un problème.
j'ai un script php modifié qui me renvoit une réponse en XML du type:
J'ai donc le fameux formulaire de recherche en live.
Le problème c'est que j'ai créé une fonction de newbie pour que lorsque je clic sur un des résultats de la liste, les champs du formulaire soient rempli grace à l'option sélectionnée.
Bon ça remplit les champs mais pas avec les bons résultats, comme si il y avait un cache de donnée ou une donnée par défaut.
Je sais que c'est un problème de javascript mais je ne trouve pas, j'ai essayé avec this.options[this.selectedIndex].text , rien à faire.
Donc je précise, j'aimerais si possible de l'aide pour trouver le problème dans ma fonction fillform qui fait mal son boulot.
Code : Tout sélectionner
<head>
<title>IP to Customer and email using XmlHttpRequest</title>
<link href="style.css" rel="stylesheet" type="text/css">
<script type="text/javascript">
document.write('<script src="XHRConnection.js"><\/script>');
// Déclaration de la fonction de Callback
// + ---------------------------------------------------------------------------------
// + afficherResultats
// + Affiche ou non le conteneur en fonction du résultat de la recherche
// + ---------------------------------------------------------------------------------
function afficherResultats(obj) {
// Construction des noeuds
var tabResult = obj.responseXML.getElementsByTagName('resultat');
document.getElementById('zoneResultats').innerHTML = '';
if (tabResult.length > 0) {
// On définit la hauteur de la liste en fonction du nombre de rsultats et de la hauteur de ligne
var hauteur = tabResult.length * 22;
with(document.getElementById('zoneResultats').style) {
visibility = 'visible';
height = hauteur + 'px';
};
for (var i = 0; i < tabResult.length; i++) {
resultat = tabResult.item(i);
var egt = document.createElement('li');
var lnk = document.createElement('a');
var texte = document.createTextNode(resultat.getAttribute('ip'));
lnk.appendChild(texte);
// lnk.setAttribute('href', 'none'); // Si on clique renvoi vers un lien
lnk.setAttribute('title', resultat.getAttribute('Client')); // Titre de l'option de liste lors de onmouseover
egt.appendChild(lnk);
document.getElementById('zoneResultats').appendChild(egt);
}
}
else {
document.getElementById('zoneResultats').style.visibility = 'hidden';
}
}
// Déclaration de la fonction qui lance la recherche
function loadData() {
var XHR = new XHRConnection();
XHR.appendData("foo", document.getElementById('foo').value);
XHR.sendAndLoad("search.php", "POST", afficherResultats);
}
//Ma fonction de newbie pour remplir les champs du formulaire après sélection ds le menu
function fillform(ip) {
document.getElementById('foo').value = resultat.getAttribute('ip');
document.getElementById('customer').value = resultat.getAttribute('Client');
document.getElementById('email').value = resultat.getAttribute('email');
document.getElementById('cc').value = resultat.getAttribute('Cc');
document.getElementById('zoneResultats').style.visibility = ('hidden'); //Pour cacher le menu après sélection
}
</script>
</head>
<body>
<form id="formulaire" action="index.php" method="post">
<fieldset>
<label for="foo">Saisissez une IP:</label>
<input type="text" size="15" name="foo" id="foo" value="" onkeyup="loadData();" />
<ul id="zoneResultats" style="visibility: hidden;" onclick="fillform(this.value);"></ul>
<label for="customer">Client:</label>
<input type="text" id="customer" name="customer" size="30" />
<label for="email">Contact:</label>
<input type="text" id="email" name="email" size="25" />
<label for="cc">Cc:</label>
<input type="text" id="cc" name="cc" size="25" /><p>
Blabla
</p><p>
<input name="reset" type="reset" id="reset" value="Erase it!"></p>
</fieldset>
</form>
</body>
Mille excuses! :oops:
Je recommence.
J'ai avancé sur ce projet. j'ai juste un problème.
j'ai un script php modifié qui me renvoit une réponse en XML du type:
[code]
<resultats nb="2">
<resultat ip="192.168.0.1" Client="TEST & CO" email="
[email protected]" Cc="
[email protected]"/>
<resultat ip="192.168.1.1" Client="MY CO" email="
[email protected]" Cc="
[email protected]"/>
</resultats>
[/code]
J'ai donc le fameux formulaire de recherche en live.
Le problème c'est que j'ai créé une fonction de newbie pour que lorsque je clic sur un des résultats de la liste, les champs du formulaire soient rempli grace à l'option sélectionnée.
Bon ça remplit les champs mais pas avec les bons résultats, comme si il y avait un cache de donnée ou une donnée par défaut.
Je sais que c'est un problème de javascript mais je ne trouve pas, j'ai essayé avec this.options[this.selectedIndex].text , rien à faire.
Donc je précise, j'aimerais si possible de l'aide pour trouver le problème dans ma fonction fillform qui fait mal son boulot.
[code]
<head>
<title>IP to Customer and email using XmlHttpRequest</title>
<link href="style.css" rel="stylesheet" type="text/css">
<script type="text/javascript">
document.write('<script src="XHRConnection.js"><\/script>');
// Déclaration de la fonction de Callback
// + ---------------------------------------------------------------------------------
// + afficherResultats
// + Affiche ou non le conteneur en fonction du résultat de la recherche
// + ---------------------------------------------------------------------------------
function afficherResultats(obj) {
// Construction des noeuds
var tabResult = obj.responseXML.getElementsByTagName('resultat');
document.getElementById('zoneResultats').innerHTML = '';
if (tabResult.length > 0) {
// On définit la hauteur de la liste en fonction du nombre de rsultats et de la hauteur de ligne
var hauteur = tabResult.length * 22;
with(document.getElementById('zoneResultats').style) {
visibility = 'visible';
height = hauteur + 'px';
};
for (var i = 0; i < tabResult.length; i++) {
resultat = tabResult.item(i);
var egt = document.createElement('li');
var lnk = document.createElement('a');
var texte = document.createTextNode(resultat.getAttribute('ip'));
lnk.appendChild(texte);
// lnk.setAttribute('href', 'none'); // Si on clique renvoi vers un lien
lnk.setAttribute('title', resultat.getAttribute('Client')); // Titre de l'option de liste lors de onmouseover
egt.appendChild(lnk);
document.getElementById('zoneResultats').appendChild(egt);
}
}
else {
document.getElementById('zoneResultats').style.visibility = 'hidden';
}
}
// Déclaration de la fonction qui lance la recherche
function loadData() {
var XHR = new XHRConnection();
XHR.appendData("foo", document.getElementById('foo').value);
XHR.sendAndLoad("search.php", "POST", afficherResultats);
}
//Ma fonction de newbie pour remplir les champs du formulaire après sélection ds le menu
function fillform(ip) {
document.getElementById('foo').value = resultat.getAttribute('ip');
document.getElementById('customer').value = resultat.getAttribute('Client');
document.getElementById('email').value = resultat.getAttribute('email');
document.getElementById('cc').value = resultat.getAttribute('Cc');
document.getElementById('zoneResultats').style.visibility = ('hidden'); //Pour cacher le menu après sélection
}
</script>
</head>
<body>
<form id="formulaire" action="index.php" method="post">
<fieldset>
<label for="foo">Saisissez une IP:</label>
<input type="text" size="15" name="foo" id="foo" value="" onkeyup="loadData();" />
<ul id="zoneResultats" style="visibility: hidden;" onclick="fillform(this.value);"></ul>
<label for="customer">Client:</label>
<input type="text" id="customer" name="customer" size="30" />
<label for="email">Contact:</label>
<input type="text" id="email" name="email" size="25" />
<label for="cc">Cc:</label>
<input type="text" id="cc" name="cc" size="25" /><p>
Blabla
</p><p>
<input name="reset" type="reset" id="reset" value="Erase it!"></p>
</fieldset>
</form>
</body>
[/code]