我遇到了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);
}
});
});
非常感谢任何帮助。提前谢谢!
答案 0 :(得分:2)
根据jQuery UI文档:
本地数据可以是一个简单的字符串数组,也可以包含 数组中每个项目的对象,带有标签或值 财产或两者兼备。 label属性显示在建议中 菜单。该值将在用户之后插入到input元素中 从菜单中选择了一些东西。
如果您将place
更改为value
,该插件会知道下拉列表中显示的内容,但您仍然可以在选择处理程序中访问id
。
答案 1 :(得分:1)
来自jQuery's autocomplete documentation:
本地数据可以是一个简单的字符串数组,也可以包含 数组中每个项目的对象,带有标签或值 财产或两者兼备。 label属性显示在建议中 菜单。该值将在用户之后插入到input元素中 从菜单中选择了一些东西。如果只指定了一个属性, 它将用于两者,例如。如果你只提供价值属性, 该值也将用作标签。
基本上它是一个数组,或者如果它是json,它需要有“value”和/或“label”,其中value是输入元素中的设置值,label是显示的值。如果仅存在“值”或“标签”,那么它们将用于两者。