cs_mcei
Messages postés4Date d'inscriptiondimanche 1 mars 2009StatutMembreDernière intervention18 février 2011
-
5 nov. 2010 à 17:46
gzen92
Messages postés1Date d'inscriptiondimanche 29 décembre 2002StatutMembreDernière intervention15 mars 2011
-
15 mars 2011 à 08:30
J'ai un formulaire avec un pour saisir le matricule d'un camion. je veux quand l'utilisateur saisie un ou deux caracteres du matricle une liste s'affiche avec les matricules qui débutent avec ces deux caracteres pour s'implifier le saisi.
J'espere que vous m'aider avec vos solutions.
Merci
gzen92
Messages postés1Date d'inscriptiondimanche 29 décembre 2002StatutMembreDernière intervention15 mars 2011 15 mars 2011 à 08:30
Je remets ce sujet à jour, car j'ai trouvé une solution alternative et sans AJAX ou DOM (je ne sais même pas ce que c'est !).
Moi j'ai d'abord enregistré la page google.fr et j'ai vu les 150 Ko de code javascript... Même après reformatage, c'est incompréhensible, pour moi en tout cas.
Alors j'ai réfléchi...
Je vais vous faire part de ma réflexion :
Pour Google, vu le nombre de possibilités de mots ou chaînes suggérés (des millions sans aucun doute), le script fait une requête au serveur afin d'actualiser cette liste à chaque frappe clavier.
Pour mon cas (et le votre peut-être), je n'ai que "quelques milliers" de valeurs. J'ai donc stocker toutes ces valeurs directement dans la page dans une partie javascript (via PHP et SQL) et à chaque saisie dans un champ "input", le champ "select" se modifie en conséquence à l'aide de javascript.
Alors c'est moins joli que Google, mais beaucoup plus simple à mettre en place.
Je vous donne une idée de code pour ceux qui n'auraient pas tout compris :
- récupération des valeurs dans une table SQL avec PHP (les valeurs affichées et les identifiant pour "value")
while(...){
$listeID .= "$valeur['id'], ";
$listeNom .= "$valeur['...'], ";
}
- création d'un tableau javascript et de la liste pour le "select"
<script language=javascript>
var tabID = new Array($listeID);
var tabNom = new Array($listeNom);
for(i=0; i<tabNom.length; i++){
document.forms.NOMFORM.NOMSELECT.options[document.forms.NOMFORM.NOMSELECT.options.length] = new Option(tabNom[i], tabID[i]);
</script>
- dans un "input" on rajoute un "onKeyUp=refaitTab()"
- dans cette fonction, on supprime tous les valeurs ou, astuce, on réduit leur nombre à 0 :)
document.forms.NOMFORM.NOMSELECT.options.length = 0;
- on recrée la liste comme on l'a crée mais en ne sélectionnant que les valeurs que l'on veut (méthode .indexOf() : chaîne appartient)