Bonjour,
Soit un input muni d'un autocomplete qui va chercher une liste de villes en BDD en fonction de ce qui est tapé par l'utilisateur, comme je l'explique dans mon blog.
J'ai mis en label et en value la même chose :
Code Javascript : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 return { label: item.vilNom + '(' + item.vilDpt + ')', /* Construit la liste des possibilités affichées */ value: item.vilNom + '(' + item.vilDpt + ')' /* Détermine la valeur du contrôle après sélection dans la liste */ }
Si je mets l'identifiant de la ville en value, c'est cet identifiant qui s'affiche une fois la ville sélectionnée au lieu du label, ce qui n'est pas terrible pour l'utilisateur.
Je peux utiliser l'événement select pour reporter la valeur dans un autre champs, par exemple, un input hidden qui stockerait l'identifiant et je voudrais alors affecter à la valeur de mon champ en autocomplete le label séclectionné.
Si j'ai bien compris, l'action standard de l'événement select - afficher la valeur sélectionnée s'effectue après ce que je mets dans la fonction de l'événement select.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 return { label: item.vilNom + ' (' + item.vilDpt + ')', /*value: item.vilNom + ' (' + item.vilDpt + ')'*/ value: item.vilId } /* ... */ select: function (event, ui) { $("#"+controle_ville_id).val(ui.item.value); /* alimentation du input hidden fonctionne */ $(this).val(ui.item.label); /* forçage de l'affichage du champ autocomplete avec le label sélectionné ne fonctionne pas */ }
J'ai essayé aussi de reporter ça juste après l'autocomplete mais ça ne fonctionne pas mieux :
Une idée à me soumettre en m'expliquant le phénomène ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 }); /* Fin de $("#villeNaissance, #apaVille, #apeVille").autocomplete({ */ $(this).on( "autocompleteselect", function( event, ui ) { $("#"+controle_ville_id).val(ui.item.value); $(this).val(ui.item.label); } );
Partager