如何进行传递id而不是名称的jQuery自动完成?

时间:2010-12-06 11:32:57

标签: jquery jquery-ui autocomplete jquery-autocomplete jquery-ui-autocomplete

我一直在寻找jQuery UI Autocomplete,因为我需要<input />,但问题是我需要传递已完成名称的id。让我解释一下:

我有一系列名字:

$names = array(
    array('name' => 'John', id => '1'),
    array('name' => 'Sarah', id => '2'),
    array('name' => 'Josh', id => '3)
);

然后,使用AJAX,输入将使用数组的一个名称自动完成,但是当我提交时,我需要id而不是名称。我该如何管理?

提前致谢

2 个答案:

答案 0 :(得分:14)

JQuery UI Autocomplete控件可以接受搜索结果列表作为一组显示/值对象。

从内存中,您可以使用以下格式创建Json对象...

[
    {label:"Display Name for result 1", value:1},
    {label:"Display Name for result 2", value:2},
    {label:"Display Name for result 3", value:3}
]

label属性包含要显示的文本,值proberty包含id。当用户选择搜索结果时,可以检查这些值。该控件有一个select事件,您可以监听。

答案 1 :(得分:8)

您需要将ID保存到隐藏字段中。

您可以在“选择”事件中实现此目的。 http://jqueryui.com/demos/autocomplete/#event-select

此示例显示了选择事件http://jqueryui.com/demos/autocomplete/#custom-data

所以我的想法就是做这样的事情:

        select: function( event, ui ) {
            $( "#project-id" ).val( ui.item.value );
            return false;
        }