jquery 自动完成 id 和 value 不起作用

Dom*_*Dom 3 jquery jquery-autocomplete

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

\n\n
$(\'#rechercher_personne\').autocomplete({\n    source : function(requete, reponse){ // les deux arguments repr\xc3\xa9sentent les donn\xc3\xa9es n\xc3\xa9cessaires au plugin\n        $.ajax({\n            url : $(\'#url_for_ajax\').val() + \'/getListePersonneAjax\',\n            dataType : \'json\', // on sp\xc3\xa9cifie bien que le type de donn\xc3\xa9es est en JSON\n            data : {nom : $(\'#rechercher_personne\').val(), maxRows : 15},\n\n            success : function(donnee){\n                  console.log(donnee);\n                reponse($.map(donnee, function(objet){\n                    return objet.id + \', \' + objet.value; \n                }));\n            }\n        });\n    },\n    minLength: 3,\n\n      select: function( event, ui ) {\n\n        $( "#id_personne" ).val( ui.item.id ); // <== KO\n        $(\' #rechercher_personne\' ).val(  ui.item.value ); // <== OK\n        return false;\n      } ,\n\n    messages: {\n        noResults: \'\',\n        results: function() {}\n    }\n}); \n
Run Code Online (Sandbox Code Playgroud)\n\n

包含该值的字段正常。\n必须包含 id 的字段是 KO。它总是空的。

\n\n

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

\n\n

多米尼克

\n\n

编辑 :

\n\n
$(\'#rechercher_personne\').autocomplete({\n    source : function(requete, reponse){ // les deux arguments repr\xc3\xa9sentent les donn\xc3\xa9es n\xc3\xa9cessaires au plugin\n        $.ajax({\n            url : $(\'#url_for_ajax\').val() + \'/getListePersonneAjax\',\n            dataType : \'json\', // on sp\xc3\xa9cifie bien que le type de donn\xc3\xa9es est en JSON\n            data : {nom : $(\'#rechercher_personne\').val(), maxRows : 15},\n\n            success : function(donnee){\n                  console.log(donnee);\n                reponse($.map(donnee, function(objet){\n                   //  return objet.value + \', \' + objet.label; \n                     return objet.label;\n                }));\n            }\n        });\n    },\n    minLength: 3,\n\n      select: function( event, ui ) {\n          console.log(ui.item);\n        $( "#id_personne" ).val( ui.item.value ); // <== KO\n        $(\' #rechercher_personne\' ).val(  ui.item.label ); // <== OK\n        return false;\n      } ,\n\n    messages: {\n        noResults: \'\',\n        results: function() {}\n    }\n}); \n
Run Code Online (Sandbox Code Playgroud)\n\n

“ui.item.value”和“ui.item.label”包含标签。如何为“ui.item.value”赋予良好的价值?

\n

Dom*_*Dom 6

这是解决方案:

\n\n

html部分:

\n\n
<input id="rechercher_personne" class="form-control typeahead" type="text" name="personne" placeholder="Rechercher personne ..." pattern=".{2,}" title="2 caract\xc3\xa8res minimum" >\n<input type="hidden" id="id_personne" class="form-control"/>\n
Run Code Online (Sandbox Code Playgroud)\n\n

JavaScript 部分:

\n\n
$(\'#rechercher_personne\').autocomplete({\n    source : function(requete, reponse){\n\n        $.ajax({\n            url : $(\'#url_for_ajax\').val() + \'/getListePersonneAjax\',\n            dataType : \'json\', \n            data : {nom : $(\'#rechercher_personne\').val(), maxRows : 15},\n            success : function(donnee){\n\n                reponse($.map(donnee, function(objet){\n                    return {\n                        label: objet.nom_personne,\n                        value: objet.id_personne\n                        };\n                }));\n            }\n        });\n    },\n\n    minLength: 3,\n    delay:500,\n\n    select: function( event, ui ) {\n         $(\' #rechercher_personne \' ).val(  ui.item.label ); \n         $(\' #id_personne \').val( ui.item.value ); \n         return false;\n      } ,\n\n    messages: {\n        noResults: \'\',\n        results: function() {}\n    }\n\n\n}); \n
Run Code Online (Sandbox Code Playgroud)\n\n

json 看起来像:

\n\n
{"id_personne":4,"nom_personne":"nom2 prenom2"},{"id_personne":5,"nom_personne":"nom3 prenom3"},{"id_personne":6,"nom_personne":"nom4 prenom4"}\n
Run Code Online (Sandbox Code Playgroud)\n\n

我遇到的问题是映射不太好。非常重要:自动完成需要labelvalue正常工作。

\n