Jquery Autocomplete: comment configurer quoi envoyer au serveur?

Actuellement, après avoir tapé des choses, le serveur me renvoie quelque chose comme:

[{"id":"1", "value":"My first character"},{"id":"2", "value":"My second Character"}] 

Et quand je sélectionne “Mon premier personnage” et que je soumets le formulaire, il envoie:

 array(1) { ["members"]=> ssortingng(18) "My first character" } 

Mais je préfère envoyer l’ID . Comment dire à .autocomplete d’envoyer l’id à la place de l’étiquette du champ? ( Code JS )

Ça doit être simple mais ça me manque.

Merci

En fait, s’il s’agit d’une saisie de texte, vous soumettez toujours la valeur affichée. Ce que vous pouvez faire est de copier l’identifiant sur un élément caché puis attraper ce côté serveur. Vous pourriez faire:

  select: function( event, ui ) { var terms = split( this.value ); // remove the current input terms.pop(); // add the selected item terms.push( ui.item.value ); // add placeholder to get the comma-and-space at the end terms.push( "" ); this.value = terms.join( ", " ); //get the id var id = ui.term.id; //copy it to another hidden element $('#yourhiddeninput').val(id); return false; } 

Une solution possible consiste à append à votre formulaire un champ masqué qui stockera l’ID actuellement sélectionné.

  

Lorsqu’un élément est sélectionné avec la saisie semi-automatique, vous pouvez utiliser l’ événement select pour renseigner ce champ masqué avec l’ID sélectionné.

Déclenché lorsqu’un élément est sélectionné dans le menu; ui.item fait référence à l’élément sélectionné

Dans vos données de saisie semi-automatique, ajoutez un champ d’ label , puis remplacez le champ de value par l’id.