我正在编写一个在“发送”字段中使用jQuery UI自动完成的消息传递应用程序。我已经完成了所有工作,但我需要将一些元数据(如用户ID)附加到项目中。
选择项目后,我计划添加一个带有用户ID的隐藏输入,如下所示:<input type="hidden" name="to[]" value="4" />
为每个选定的用户添加一个。然后,当提交表单时,这些数据将被发送到php脚本,在那里我可以向每个用户发送消息。
我只是想知道这样的事情是否可行,如果没有,最好的办法是什么?或者,有没有比我想的更好的方式呢?
谢谢,
答案 0 :(得分:4)
你走在正确的轨道上!
自动完成小部件是为了处理这样的情况而构建的。只要source
中的项目具有value
属性(以及可选的label
属性),窗口小部件就会正确呈现选项。
所以你有两个选择。您可以提供label
和value
属性,并在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
。