JQuery自动完成显然识别但不显示选择选项

时间:2011-08-29 17:06:20

标签: php jquery jquery-ui autocomplete

我遇到了jQuery UI自动完成的问题。我认为它来自源文件(远程文件名为places.php),但它有点奇怪:这个源是正确的json编码,其开头没有空格(我认为这可能是问题,但它是我在浏览器中直接访问它时工作正常。例如,对于术语“u”,它将返回

(places.php)

[{"id":"2","place":"Belgium"},{"id":"1","place":"USA"}]

当我尝试使用此表单间接访问数据时出现问题:

<label for="the_value" value="">Value</label>
<input type="text" id="the_value" name="the_value" value=""/>         
<input type="hidden" id="the_id" name="the_id" value="default"/>

当用户在'the_value'输入框中输入内容时,应显示来自places.php的值。相反,滑动面板仅打开2到3毫米并且不显示任何内容......(似乎即使没有显示任何选项,脚本也会识别它们是可用的,因为它移动了一点,当不存在结果时不会发生...) 。注意:此问题与浏览器无关:它出现在mozilla和IE8中。 javascript是以下

$(function(){
    $('#the_value').autocomplete({
        source : 'places.php',       
        select : function(event, ui){
            $('#the_id').val(ui.item.id);  
        }
    });
});

非常感谢任何帮助。提前谢谢!

2 个答案:

答案 0 :(得分:2)

根据jQuery UI文档:

  

本地数据可以是一个简单的字符串数组,也可以包含   数组中每个项目的对象,带有标签或值   财产或两者兼备。 label属性显示在建议中   菜单。该值将在用户之后插入到input元素中   从菜单中选择了一些东西。

如果您将place更改为value,该插件会知道下拉列表中显示的内容,但您仍然可以在选择处理程序中访问id

答案 1 :(得分:1)

来自jQuery's autocomplete documentation

  

本地数据可以是一个简单的字符串数组,也可以包含   数组中每个项目的对象,带有标签或值   财产或两者兼备。 label属性显示在建议中   菜单。该值将在用户之后插入到input元素中   从菜单中选择了一些东西。如果只指定了一个属性,   它将用于两者,例如。如果你只提供价值属性,   该值也将用作标签。

基本上它是一个数组,或者如果它是json,它需要有“value”和/或“label”,其中value是输入元素中的设置值,label是显示的值。如果仅存在“值”或“标签”,那么它们将用于两者。