Bonjour,
bon, mon problème est une suite de l'ancien problème que j'avais eu (topic dessous dans la liste).
En fait, j'ai un champ input de type text qui contiendra un mail. Quand je tape quelque chose dans ce champ, s'affiche dessous une liste de propositions correspondantes à ce que j'ai tapé (autocomplétion).
Sur le onChange de ce champ, j'appelle une fonction qui m'affichera les détails correspondants à ce mail.
Le problème est que la fonction se lance dès que je sélectionne un choix dans la liste (normal jusque là), mais elle ne prend pas en compte le choix que j'ai fait : juste ce que j'ai tapé auparavant.
Un petit exemple :
Champ input : info@
Liste qui s'affiche dessous : info@truc.fr, info@machin.fr, info@bidule.fr ...
Je clique sur info@truc.fr
Et là je devrais avoir les infos correspondantes à info@truc.fr
Or ma fonction cherche les infos correspondantes uniquement à info@ .
J'ai testé en mettant onSelect, onBlur, onKeyUp, onKeyPress. Mais ça ne fonctionne pas.
Voici le champ avec appel à la fonction :
Et ma fonction ajaxinfo() :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 <div id='liste'> <input type='text' class=d name='reclogm' id='reclogm' value='$reclogm' style='width:250px;' onChange="ajaxinfo();"> </div>
Dans le div 'info' il n'y a rien, juste que j'affiche ma requête à l'intérieur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 function ajaxinfo() { var ajaxin = document.getElementById("reclogm").value; http.open("GET", url + escape(ajaxin), true); http.onreadystatechange = handleHttpResponse; http.send(null); } function handleHttpResponse() { if (http.readyState == 4) { document.getElementById('info').style.display="block"; var response = http.responseText; document.getElementById('info').innerHTML = response; } }
Et ma requête :
Serait-ce le explode qui pose problème ? Si je l'enlève, apparement j'obtiens les bons résultats (mais je suis obligée de faire la requête que sur la seconde partie de l'email, ce qu'il y a après l'@).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 $ref = $_REQUEST['recherche']; $explo = explode("@",$ref); $arg = $explo[1]; $tabinfo[] = array(labels => ",Login,Destination"); $SQLinfo = "SELECT source,destination FROM emails WHERE source LIKE '%$ref%'"; $Q = dbiDoBD($SQLinfo); $i=1; while ($R = dbiFetch($Q)) { $tabinfo[$i] = array(descD => $i, valC1 => $R['source'], val2 => $R['destination'] ); $i++; }
Partager