Voilà, je cherche à développer une aide à la saisie dans un champs de formulaire à la manière de Google Suggest. Bon, je compte utiliser AJAX bien sûr, accompagné de PHP/MySQL pour le traitement serveur. J'ai à peu près compris le fonctionnement d'AJAX, et notamment l'objet XMLHttpRequest.
Ce que j'aimerais savoir faire, c'est les suggestions côté client, car je m'y connais très peu en javascript. Je vais devoir utiliser DOM, mais j'aimerais comprendre comment faire en sorte que lorsqu'on passe par-dessus une suggestion cela la mette en surbrillance et l'insère dans le champs texte, comme chez Google Suggest. Quelqu'un pourrait m'aider svp?
Bon, j'ai réussi à faire à peu près ce que je voulais...
Vous pouvez voir le résultat en cliquant ici
Voici les différents codes :
function suggest(){ // On instancie l'objet XMLHttpRequest var xhr_object = null; if(window.XMLHttpRequest){// Firefox
xhr_object = new XMLHttpRequest(); } elseif(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; }
var filename = "suggest_process.php"; var divSuggest = document.getElementById('suggest');
// On récupère la valeur saisie dans le champs texte var saisie = document.getElementById('parrain').value; var data = null; if(saisie != ''){// On vérifie qu'il y a bien quelque chose dans le champs texte
data = 'parrain='+saisie; }else{
divSuggest.style.visibility = 'hidden'; return; }
// On spécifie la méthode de transmission des données‚ l'URL et le mode de transmission de la requête ; // Le 3ème argument (true) détermine si on se met en mode asynchrone ou non
xhr_object.open('POST'‚ filename‚ true);
// On détermine ce qui doit se passer lorsque les données ont été transmises
xhr_object.onreadystatechange = function(){ if(xhr_object.readyState == 4){// Si les données ont été transmises //var XML = xhr_object.responseXML; var txt = xhr_object.responseText
divSuggest.style.visibility = 'visible';
divSuggest.innerHTML = txt; // Mettre ce qu'on doit faire avec ça } }
// On définit les entêtes d'envoi POST
xhr_object.setRequestHeader("Content–type"‚ "application/x–www–form–urlencoded"); // On envoie les données
xhr_object.send(data); }
function cacher(idDiv‚ input){ var div = document.getElementById(idDiv); //alert (suggestOver); if(!suggestOver){
div.style.visibility = 'hidden'; } return; }
function setContent(content‚ idInput){ var input = document.getElementById(idInput);
input.value = content;
input.focus(); return; }
<!DOCTYPE html PUBLIC "–//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1–strict.dtd"> <htmlxmlns="http://www.w3.org/1999/xhtml"> <head> <meta http–equiv="Content–Type"content="text/html; charset=utf–8"/> <title>Test AJAX Suggest</title> <linkhref="suggest.css"rel="stylesheet"type="text/css"/> <scripttype="text/javascript"src="suggest.js"></script> </head>
<body> <formid="form"method="post"action=""> <p><strong>Entrer un nom :</strong><br/> </p> <p> <inputname="parrain"type="text"id="parrain"size="40"onkeydown="setTimeout(suggest‚350)"onclick="setTimeout(suggest‚350)"onblur="cacher('suggest'‚ this)"/> </p> <divid="suggest"onmouseover="suggestOver=true;"onmouseout="suggestOver=false"> </div> </form> </body> </html>
<?php $mysqli = new mysqli ('localhost'‚ '*****'‚ '*****'‚ 'ff_baseo'); $retour = $mysqli–>query ("SELECT nom_client‚ idClient FROM baseo_clients WHERE nom_client LIKE '".stripslashes ($_POST['parrain'])."%' ORDER BY nom_client LIMIT 0‚10") or die($mysqli–>error);
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.