Salut à tous !!
J'aimerais créer un champ d'autocompletion qui affiche une liste de nom, et lors de la sélection récupérer l'id du nom sélectionner pour le mettre dans un champ caché.
Donc pour ça j'ai en html :
Et dans le JS, je rempli mon tableau avec des données en provenance d'un web service.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 <input type="text" id="filtre_nom" class="width: 300px;"/> <input type="text" id="filtre_nom_id_selected" value=""/>
Puis je fais l'autocompletion :
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
20
21
22
23 if(lstNom1.length > 0){ jQuery(xml).find('Nom1').each(function(){ var idNom1 = jQuery(this).find('id').text(); var nomNom1 = jQuery(this).find('libelle').text(); dataNom.push([idNom1, nomNom1]); }); } if(lstNom2.length > 0){ jQuery(xml).find('Nom2').each(function(){ var idNom2 = jQuery(this).find('id').text(); var nomNom2 = jQuery(this).find('libelle').text(); dataNom.concat([idNom2, nomNom2]); }); } if(lstNom3.length > 0){ jQuery(xml).find('Nom3').each(function(){ var idNom3 = jQuery(this).find('id').text(); var nomNom3 = jQuery(this).find('libelle').text(); dataNom.concat([idNom3, nomNom3]); }); }
Mon problème est qu'à chaque fois je ne remonte pas les bonnes infos... un coup il m'affiche que les id de la liste "Nom1", un coup rien du tout..
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 jQuery("#filtre_client").autocomplete(dataNom, { mustMatch: true, matchContains: true }).result(function(event, data, formatted) { if(data){ jQuery("#filtre_client_id_selected").val(data[0]); } });
J'ai l'impression que mon tableau est de forme dataNom[i][id, nom] car quand je fait
il m'affiche la première ligne genre " 01 - robert " ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 alert(dataNom[0]);
Comment faire pour que dans l'autocompletion j'ai bien ce que je veux , c'est à dire les libellés à l'affiche puis les ids lors de la sélection (result) ?
Partager