Jquery ui jqueryui自动完成选择

Jquery ui jqueryui自动完成选择,jquery-ui,jquery-ui-autocomplete,Jquery Ui,Jquery Ui Autocomplete,我需要一些关于下面代码的帮助 $auto\u cp.autocomplete{ 最小长度:3, //来源 来源:functionreq,添加{ $.getJSONfriends.php?回调=?,req,functiondata{ var建议=[]; $.eachdata,functioni,val{ 建议.pushval.name; }; 补充建议; }; }, //挑选 选择:函数,用户界面{ alertui.item.value; } };​ 使用FireBug,我在控制台中获得了以下信息

我需要一些关于下面代码的帮助

$auto\u cp.autocomplete{ 最小长度:3, //来源 来源:functionreq,添加{ $.getJSONfriends.php?回调=?,req,functiondata{ var建议=[]; $.eachdata,functioni,val{ 建议.pushval.name; }; 补充建议; }; }, //挑选 选择:函数,用户界面{ alertui.item.value; } };​ 使用FireBug,我在控制台中获得了以下信息:

jQuery171003666625335785867_13371116004522[{姓名:97300 卡宴,zzz:203},{姓名:97311 鲁拉,zzz:201},{姓名:97312 Saint Elie,zzz:388},{姓名:97320 Saint Laurent du 马罗尼,zzz:391},{姓名:97351 马托里,zzz:52},{姓名:97354雷米尔·蒙乔利 卡宴,zzz:69},{姓名:97355 Macouria Tonate,zzz:449}]

一切都很好,但我不知道如何在选择项上获得'zzz'的值

我试过了

alert(ui.item.zzz);

但是它不起作用。

您的源函数只是填充名称。如果需要该数据结构中的所有内容,请执行以下操作:

$("#auto_cp").autocomplete({
    minLength: 3,
    //source
    source: function(req, add) {
        $.getJSON("friends.php?callback=?", req, function(data) {
            var suggestions = [];
            $.each(data, function(i, val) {
                suggestions.push(val); //not val.name
            });
            add(suggestions);
        });
    },
    //select
    select: function(e, ui) {
        alert(ui.item.value.zzz);
    }
});​

这似乎是一个对象数组。。。您可能缺少的是[0]或一般的[index]


请检查以下内容:

自动完成小部件需要一个数组格式的数据源:

包含标签特性、值特性或两者的对象 简单字符串值 您当前正在构建第二个字符串值数组,该数组工作正常,但您也可以在遍历数据时稍微调整数据,并提供对象中的其他属性:

$("#auto_cp").autocomplete({
    minLength: 3,
    //source
    source: function(req, add) {
        $.getJSON("friends.php?callback=?", req, function(data) {
            var suggestions = [];
            $.each(data, function(i, val) {
                suggestions.push({
                    label: val.name,
                    zzz: val.zzz
                });
            });
            add(suggestions);
        });
    },
    //select
    select: function(e, ui) {
        alert(ui.item.zzz);
    }
});​
现在,由于您提供小部件的数组包含具有name属性的对象,因此您应该获得自动完成功能,并且还可以访问zzz属性


下面是一个没有AJAX调用的工作示例:

在警报弹出窗口中看到什么?在警报弹出窗口中看到:未定义,如果在选择函数中执行alertui.item,您会看到什么?执行alertui.item我得到:[object object]Try console.logui.item;在Chrome中,应该显示完整的对象结构。它也不起作用。是的,它是一个数组,下面是我通过ajax$query=mysql\u querySELECT cv\u ville,cv\u numville从cms\u code\u ville中调用的文件的php代码,其中cv\u ville类似于“%.$\u GET['term'].%”;//为$x=0、$numrows=mysql\u num\u rows$query构建结果数组$x<$numrows$x++{$row=mysql\u fetch\u assoc$query;$friends[$x]=arrayname=>$row[cv\u ville],zzz=>$row[cv\u numville];}//将JSON回送到页面$response=$\u GET[callback]。json_对$friends进行编码;回音$应答;啊,但是如果您使用:alertui[0].zzz会怎么样?一旦您选择了某个内容,它就会触发。所以ui.item应该是选择项。。。如果未选择任何内容,则为空。因此,您可以检查ui.item是否为空,然后检索其属性。在你的json中。。。你有名字和zzz。。。所以你可以使用ui.item.name或ui.item.name.value.Hello,我尝试了你的解决方案,但仍然没有定义。对于您的工作示例,可以,但我必须让它与ajax调用一起工作。你能帮忙吗?你用的网址是什么?由于您正在进行JSONP调用,我可能可以让JSFIDLE使用相同的URL。好的,我使用您的解决方案使它工作。我只需要做:alertui.item.zzz;瞧@用户367864:啊!很抱歉,我的回答有误,我已经更正了。我不知道你是想做一个有效的例子,还是只是想正确解析对象,但在搜索框中键入会返回所有结果。显示的结果应该只是与输入的文本匹配的结果,不是吗?嗯,我尝试过这个,但它破坏了我的自动完成功能。我的意思是,当我开始打字时,我没有得到任何结果。我可以在Firebug中看到响应,但据我所知,val.name未显示。