Javascript 从自动完成插件的JSON数组中获取额外参数

Javascript 从自动完成插件的JSON数组中获取额外参数,javascript,jquery,json,autocomplete,Javascript,Jquery,Json,Autocomplete,我有下一个自动完成输入的功能: $("#auto").autocomplete({ source:"/autocomplete.php", minLength: 5, _renderItem: function( ul, item) { return $( "<li></li>" ) .data( "item.autocomplete", item )

我有下一个自动完成输入的功能:

$("#auto").autocomplete({
        source:"/autocomplete.php",
        minLength: 5,
        _renderItem: function( ul, item) { 
            return $( "<li></li>" ) 
                .data( "item.autocomplete", item ) 
                .append( $( "<a></a>" ).text( item.label ) ) 
                .appendTo( ul ); 
            }   

});
$(“#自动”).autocomplete({
来源:“/autocomplete.php”,
最小长度:5,
_renderItem:函数(ul,项){
返回$(“
  • ”) .data(“item.autocomplete”,item) .append($(“”).文本(item.label)) .附录(ul); } });
    JSON数组包含3个参数(值、标签和额外参数)。在选择了自动完成列表中的一个元素之后,如何获取第三个参数并将其附加到另一个输入文本中

    使用事件

    向事件处理程序传递两个参数:

    • 事件对象
    • 一个
      ui
      对象,其中包含
      ui.item
    例如:

    $("#auto").autocomplete({
            source:"/autocomplete.php",
            minLength: 5,
            select: function(e, ui) {
                // "ui.item" is the data item
                alert(ui.item.extra);
            }    
    });
    

    顺便说一句,您试图覆盖
    \u renderItem
    方法的方式不正确,应该是:

    $("#auto").autocomplete({
        source:"/autocomplete.php",
        minLength: 5,
    })
    .data('autocomplete')
    ._renderItem = function( ul, item) { 
        return $( "<li></li>" ) 
            .data( "item.autocomplete", item ) 
            .append( $( "<a></a>" ).text( item.label ) ) 
            .appendTo( ul ); 
    };
    
    $(“#自动”).autocomplete({
    来源:“/autocomplete.php”,
    最小长度:5,
    })
    .data(“自动完成”)
    ._renderItem=函数(ul,项){
    返回$(“
  • ”) .data(“item.autocomplete”,item) .append($(“”).文本(item.label)) .附录(ul); };
    你应该考虑说明这有什么帮助。详细的答案更有可能被选中。这也有助于其他人理解为什么你的答案是正确的,如果有解释的话。欢迎来到SO!我想我应该有..谢谢..将在澄清后添加详细信息此函数将在选择时触发,使用val(),您可以通过向其传递值来替换现有值。e用于捕获事件以执行业务逻辑。您确定它不是这样的:
    $('input@anotherInput'.val(ui.item.extra);
    。你应该在调试器中测试你的解决方案。我肯定你会遇到“分配中的左侧无效”错误。请使用答案下的“编辑”链接更正并添加详细信息。:)我擅自删除了等号后的右侧。现在看起来很棒+1.
    select: function(e, ui) {
            $('input#anotherInputTextId').val(ui.item.extra) ;
        }