具有id和值的jquery自动完成不起作用

具有id和值的jquery自动完成不起作用,jquery,jquery-autocomplete,Jquery,Jquery Autocomplete,下面是我的jquery完整的js脚本。下拉菜单工作正常。但当我选择一行时,我想填充两个字段:value和id,但它不起作用 $('#rechercher_personne').autocomplete({ source : function(requete, reponse){ // les deux arguments représentent les données nécessaires au plugin $.ajax({ url : $(

下面是我的jquery完整的js脚本。下拉菜单工作正常。但当我选择一行时,我想填充两个字段:value和id,但它不起作用

$('#rechercher_personne').autocomplete({
    source : function(requete, reponse){ // les deux arguments représentent les données nécessaires au plugin
        $.ajax({
            url : $('#url_for_ajax').val() + '/getListePersonneAjax',
            dataType : 'json', // on spécifie bien que le type de données est en JSON
            data : {nom : $('#rechercher_personne').val(), maxRows : 15},

            success : function(donnee){
                  console.log(donnee);
                reponse($.map(donnee, function(objet){
                    return objet.id + ', ' + objet.value; 
                }));
            }
        });
    },
    minLength: 3,

      select: function( event, ui ) {

        $( "#id_personne" ).val( ui.item.id ); // <== KO
        $(' #rechercher_personne' ).val(  ui.item.value ); // <== OK
        return false;
      } ,

    messages: {
        noResults: '',
        results: function() {}
    }
}); 
包含该值的字段是OK。 必须包含id的字段为KO。它总是空的

我是这个插件的初学者,我肯定会错过一些东西,但我没有找到什么。谢谢你的帮助

多米尼克

编辑:

$('#rechercher_personne').autocomplete({
    source : function(requete, reponse){ // les deux arguments représentent les données nécessaires au plugin
        $.ajax({
            url : $('#url_for_ajax').val() + '/getListePersonneAjax',
            dataType : 'json', // on spécifie bien que le type de données est en JSON
            data : {nom : $('#rechercher_personne').val(), maxRows : 15},

            success : function(donnee){
                  console.log(donnee);
                reponse($.map(donnee, function(objet){
                   //  return objet.value + ', ' + objet.label; 
                     return objet.label;
                }));
            }
        });
    },
    minLength: 3,

      select: function( event, ui ) {
          console.log(ui.item);
        $( "#id_personne" ).val( ui.item.value ); // <== KO
        $(' #rechercher_personne' ).val(  ui.item.label ); // <== OK
        return false;
      } ,

    messages: {
        noResults: '',
        results: function() {}
    }
}); 
ui.item.value和ui.item.label包含标签。如何赋予ui.item.value良好的价值?

以下是解决方案:

html部分:

<input id="rechercher_personne" class="form-control typeahead" type="text" name="personne" placeholder="Rechercher personne ..." pattern=".{2,}" title="2 caractères minimum" >
<input type="hidden" id="id_personne" class="form-control"/>
json看起来像:

{"id_personne":4,"nom_personne":"nom2 prenom2"},{"id_personne":5,"nom_personne":"nom3 prenom3"},{"id_personne":6,"nom_personne":"nom4 prenom4"}

我遇到的问题是映射不好。非常重要:自动完成需要标签和值才能正常工作。

是否从后端发送id属性?我对这些不太熟悉,但查看用于选择事件的jQuery自动完成文档,ui下只有两个对象可用:值和标签。因此,我猜想您必须将ID通过管道传输到数据的label属性中,然后在select事件中使用ui.item.label。如果您将数据设置为对象,例如[{label:Choice1,value:value1,{},,,,,],您可以这样做。感谢您的响应。我已更改:现在json是例如:[{label:COLLINS-Phil,value:2}].所以有一个值和一个标签。但它仍然不起作用。但是字段id_personne现在包含值而不是id。但是我想你帮了我,我走在了好的道路上。
{"id_personne":4,"nom_personne":"nom2 prenom2"},{"id_personne":5,"nom_personne":"nom3 prenom3"},{"id_personne":6,"nom_personne":"nom4 prenom4"}