jQuery自动完成 - 如何处理额外的数据?

时间:2008-12-16 19:42:58

标签: javascript jquery autocomplete

我正在努力解决以下问题。我使用jQuery autocomplete plugin从服务器获取建议值列表。列表看起来像这样:

Username1|UserId1
Username2|UserId2

因此,如果我开始输入“U”,则会弹出"Username1""Username2"的列表,如预期的那样。我可以选择第一个项目,<input>的值将变为"Username1",但我真正想要发送到服务器的是用户ID。

我可以以某种方式获取跟随用户名的ID吗?我打算在更改文本框时填写表格。也许我太盲目了,无法在文档中看到它或在Google上找到它?

3 个答案:

答案 0 :(得分:6)

使用result插件的autocomplete方法来处理此问题。数据作为数组传递给回调,您只需要在某处保存data[1]。像这样:

$("#my_field").autocomplete(...).result(function(event, data, formatted) {
    if (data) {
        $("#the_id").attr("value", data[1]);
    }
});

答案 1 :(得分:0)

我打算在这里列出一些方法,但除了一个之外的所有方法都是垃圾。在服务器上执行string-&gt;用户转换,就像生成自动完成列表一样。

一定要保持自动完成并进行AJAX验证,但是如果你尝试通过JS在表单中走私重要的表单数据(如此),那么在某些时候出错。

此外,如果你需要处理非js用户代理,你需要以任何方式编写这个方法。

答案 2 :(得分:0)

仅供参考,本文http://vivien-chevallier.com/Articles/use-bing-maps-rest-services-with-jquery-to-build-an-autocomplete-box-and-find-a-location-dynamically 通过作者的函数'displaySelectedItem'有一个很好的方法,它通过jQuery自动完成'select'事件调用(参见完整代码的文章)。

干杯

马特