Bonjour,
J'ai un moteur de recherche avec de l'autosuggestion en javascript.
J'ai à côté du formulaire de recherche une liste ou l'on peut sélectionner le type de recherche: par mots clés ou par titre.
J'ai deux pages (options.php et options2.php) qui contiennent, l'un les mots clés et l'autres les titres, renvoyés sous forme de liste xml.
J'ai essayé de créer une condition pour que en fonction ce que l'on sélectionne dans la liste, il aille chercher les mots pour l'autosuggestion soit dans options.php ,soit dans options2.php.
Merci d'avance !
Voici le javascript ou il faut récuperer le select et créer les conditions pour sélectionner la bonne page :
Et voici le code html contenant le <select> :
Modifié par frdiard (20 Apr 2009 - 13:37)
J'ai un moteur de recherche avec de l'autosuggestion en javascript.
J'ai à côté du formulaire de recherche une liste ou l'on peut sélectionner le type de recherche: par mots clés ou par titre.
J'ai deux pages (options.php et options2.php) qui contiennent, l'un les mots clés et l'autres les titres, renvoyés sous forme de liste xml.
J'ai essayé de créer une condition pour que en fonction ce que l'on sélectionne dans la liste, il aille chercher les mots pour l'autosuggestion soit dans options.php ,soit dans options2.php.
Merci d'avance !

Voici le javascript ou il faut récuperer le select et créer les conditions pour sélectionner la bonne page :
function initAutoComplete(form,field,submit){
_documentForm=form;
_inputField=field;
_inputSelect=form.elements['select-par'].selectedIndex;
_submitButton=submit;
_inputField.autocomplete="off";
creeAutocompletionDiv();
_currentInputFieldValue=_inputField.value;
_oldInputFieldValue=_currentInputFieldValue;
cacheResults("",new Array())
document.onkeydown=onKeyDownHandler;
_inputField.onkeyup=onKeyUpHandler;
_inputField.onblur=onBlurHandler;
window.onresize=onResizeHandler;
// Premier déclenchement de la fonction dans 200 millisecondes
setTimeout("mainLoop()",200)
}
var select1 =_inputSelect.value;
var _oldInputFieldValue=""; // valeur précédente du champ texte
var _currentInputFieldValue=""; // valeur actuelle du champ texte
var _resultCache=new Object(); // mécanisme de cache des requetes
// tourne en permanence pour suggerer suite à un changement du champ texte
function mainLoop(){
if(_oldInputFieldValue!=_currentInputFieldValue){
var valeur=escapeURI(_currentInputFieldValue);
var suggestions=_resultCache[_currentInputFieldValue];
if(suggestions){ // la réponse était encore dans le cache
metsEnPlace(valeur,suggestions)
}else{
callSuggestions(valeur) // appel distant
}
_inputField.focus()
}
_oldInputFieldValue=_currentInputFieldValue;
setTimeout("mainLoop()",200); // la fonction se redéclenchera dans 200 ms
return true
}
// echappe les caractère spéciaux
function escapeURI(La){
if(encodeURIComponent) {
return encodeURIComponent(La);
}
if(escape) {
return escape(La)
}
}
var _xmlHttp = null; //l'objet xmlHttpRequest utilisé pour contacter le serveur
if (select1 == 'motcle')
{
var _adresseRecherche = "options.php"; //l'adresse à interroger pour trouver les suggestions
}
if (select1 == 'titre' )
{
var _adresseRecherche = "options2.php";
}
function callSuggestions(valeur){
if(_xmlHttp&&_xmlHttp.readyState!=0){
_xmlHttp.abort()
}
_xmlHttp=getXMLHTTP();
if(_xmlHttp){
//appel à l'url distante
_xmlHttp.open("GET",_adresseRecherche+"?debut="+valeur,true);
_xmlHttp.onreadystatechange=function() {
if(_xmlHttp.readyState==4&&_xmlHttp.responseXML) {
var liste = traiteXmlSuggestions(_xmlHttp.responseXML)
cacheResults(valeur,liste)
metsEnPlace(valeur,liste)
}
};
// envoi de la requete
_xmlHttp.send(null)
}
}
Et voici le code html contenant le <select> :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<title>test d'autocompletion</title>
<link rel="stylesheet" type="text/css" href="autocompletion.css" />
<script type="text/javascript" src="autocomplete-3-2.js"></script>
<script type="text/javascript">
window.onload = function(){initAutoComplete(document.getElementById('form-test'),
document.getElementById('champ-texte'),document.getElementById('select-par'),document.getElementById('bouton-submit'))};
</script>
</head>
<body>
<div id="body">
<form name="form-test" id="form-test" action="resultat.php" method="post" style="margin-left: 50px; margin-top:20px">
<input type="text" class="champ_texte" name="champ-texte" id="champ-texte" size="20" autocomplete="off" />
<select id="select-par" name="select-par" >
<option value="motcle" selected="selected">Par mots clés</option>
<option value="titre">Par titre</option>
<option value="date">Par date</option>
</select>
<input type="submit" class="bouton_valider_recherche" id="bouton-submit">
</form>
</div>
</body>
</html>
Modifié par frdiard (20 Apr 2009 - 13:37)