将元数据添加到jQuery UI自动完成

时间:2011-04-28 09:21:55

标签: javascript jquery-ui autocomplete

我正在编写一个在“发送”字段中使用jQuery UI自动完成的消息传递应用程序。我已经完成了所有工作,但我需要将一些元数据(如用户ID)附加到项目中。

选择项目后,我计划添加一个带有用户ID的隐藏输入,如下所示:<input type="hidden" name="to[]" value="4" />为每个选定的用户添加一个。然后,当提交表单时,这些数据将被发送到php脚本,在那里我可以向每个用户发送消息。

我只是想知道这样的事情是否可行,如果没有,最好的办法是什么?或者,有没有比我想的更好的方式呢?

谢谢,

1 个答案:

答案 0 :(得分:4)

你走在正确的轨道上!

自动完成小部件是为了处理这样的情况而构建的。只要source中的项目具有value属性(以及可选的label属性),窗口小部件就会正确呈现选项。

所以你有两个选择。您可以提供labelvalue属性,并在input事件中使用value属性创建隐藏的select元素,或使用您自己的属性。通过示例更容易看到:

var users = [
    { label: 'Jon', value: 1 },
    { label: 'Jeff', value: 2 },
    { label: 'Marc', value: 3 },
    { label: 'Josh', value: 4 },
    { label: 'Andrew', value: 5}
];

$("#autocomplete").autocomplete({
    source: users,
    select: function(event, ui) {
        $("body").append("<input type='text' value='" + ui.item.value + "'/>");
    }
});

以下是一个有效的例子:http://jsfiddle.net/EYQLV/1/

如果源中的每个项目都包含该属性,则可以轻松使用ui.item.id