代码之家  ›  专栏  ›  技术社区  ›  Tomalak

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

  •  6
  • Tomalak  · 技术社区  · 16 年前

    我正在努力解决以下问题。我用 jQuery autocomplete plugin 从服务器获取建议值的列表。列表如下:

    Username1|UserId1
    Username2|UserId2
    

    所以如果我开始输入“u”,一个 "Username1" "Username2" 按预期弹出。我可以选择第一个项目和 <input> 的值将变为 “USENAME1” 但我 真的? 要发送到服务器的是用户ID。

    我是否可以通过某种方式获取用户名后面的ID?我打算在更改文本框时进行表单发布。也许我太盲目了,看不到文档里的内容,也看不到谷歌上的内容?

    3 回复  |  直到 12 年前
        1
  •  6
  •   davidavr    16 年前

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

    $("#my_field").autocomplete(...).result(function(event, data, formatted) {
        if (data) {
            $("#the_id").attr("value", data[1]);
        }
    });
    
        2
  •  0
  •   Oli    16 年前

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

    无论如何,保持自动完成并进行Ajax验证,但是如果您尝试通过JS将重要的表单数据(像这样)走私到表单中,那么 有时会出错。

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

        3
  •  0
  •   Matty J    12 年前

    仅供参考,本文 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”事件调用(有关完整代码,请参阅文章)。

    干杯

    马特