【问题标题】:Autocomplete problem with two identical "values"具有两个相同“值”的自动完成问题
【发布时间】:2011-09-03 17:11:47
【问题描述】:

我正在使用 JQuery 自动完成插件,带有 local data stored in a array:

data = [city1, city2, city3, city1]

一旦用户选择了数据元素,例如city 1,我将它存储在user_input。我使用用户输入来读取包含城市、州邮编和姓名的哈希值。当用户按 Enter 键时,该脚本会在屏幕上显示散列的每个元素。这也很好用:

  $(document).keypress(function(e) {
      if(e.keyCode == 13) {
          var user_input =  $("input#example").val()

            $.each(personinfo,function(key,value){
                if(value['city']== user_input){
                    $('#city').empty().append(value['city']);
                    $('#state').empty().append(value['state']);
                    $('#zip').empty().append(value['zip']);
                    $('#name').empty().append(value['name']);
                }
})

当有两个相同的键时,就会出现问题。例如,说一个名字"John Doe""Jane Doe",住在同一个城市:city1。因此city1 在数据数组中出现了两次,如上所示。

data在这个方法中定义:

  var data = new Array();
  $(document).ready(function(){

  $.each(personinfo,function(key,value){
    myarray.push(value['city'])
   });
  });

如何在 keypress 函数中区分上述数组中的 city1 和 city1?

personinfo 地图对象:

{"address":"07288 Albertha Station","city":"Littelside","created_at":"2011-05-25T19:24:51Z","id":1,"name":"Jane Doe","state":"Missouri","updated_at":"2011-05-26T21:25:54Z","zip":"75475-9938"},{OBJECT 2}, {OBJECT 3}, .... 

【问题讨论】:

  • 解决方案是不使用城市作为差异化因素。你的personinfo 地图中的key 是什么?
  • 我已经包含了我正在解析的 Hash 对象。
  • 等等,这没有任何意义。您想在 city1、city2、city 和 city1 中进行选择。真正的问题是什么?为什么要区分 city1 和 city1 (无法区分)?您能在 jsbin.com 上说明问题吗?
  • 我无法让它在 jsbin 上工作,因为我依赖自动完成插件。这真的是一个简单的问题。当您在两个单独的实例中选择 city1 时,您会得到相同的结果。即使例如 city1 是斯普林菲尔德。可能是 Springfield CA 或 NY - 上面的代码总是返回相同的结果,NY。
  • data 是一个可能性数组,用作自动完成插件的数据(见链接)

标签: javascript jquery arrays hash autocomplete


【解决方案1】:

正如一些 cmets 所建议的,使用相同的密钥是不可能解决问题的:解决它的唯一方法是使用不同的密钥 :-)

我只是结合城市和州来制作钥匙;似乎这应该给你一个独特的键集。

【讨论】:

    【解决方案2】:

    现在可能已经很晚了,但我只需要在一个类似的插件中解决这个问题,最好的方法是通过查找数据传递额外的引用。

    lookup = { data: ['name1', 'name2', 'name2', 'namex'], ref:[1,2,3,4] }

    因此,当用户选择第二个“name2”时,插件将返回选定的“name2”和 ref 3。 它是否支持此功能取决于插件,但即使不支持,您也应该能够稍微修改它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-04-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-14
      • 1970-01-01
      相关资源
      最近更新 更多