6

我正在努力解决以下问题。我使用jQuery 自动完成插件从服务器获取建议值列表。该列表如下所示:

用户名1|用户ID1
用户名 2|用户 ID2

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

我能以某种方式获取用户名后面的 ID 吗?我打算在更改文本框时进行表单发布。也许我太盲目了,无法在文档中看到它或在 Google 上找到它?

4

3 回答 3

6

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

$("#my_field").autocomplete(...).result(function(event, data, formatted) {
    if (data) {
        $("#the_id").attr("value", data[1]);
    }
});
于 2008-12-16T21:39:58.550 回答
0

我打算在这里列出一些方法,但除了一个之外都是垃圾。在服务器上执行字符串-> 用户转换,就像您为自动完成生成列表一样。

无论如何都要保持自动完成并进行 AJAX 验证,但是如果您尝试通过 JS 在表单中走私重要的表单数据(像这样),有时出现问题。

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

于 2008-12-16T19:54:44.643 回答
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' 事件调用(完整代码参见文章)。

干杯

马特

于 2012-05-03T06:29:31.183 回答