使用json对象的jquery ui自动完成功能不起作用

时间:2018-06-07 23:00:07

标签: jquery jquery-ui autocomplete

我正在尝试使用jquery ui自动完成的JSON对象。没有太大的成功。我看了https://jqueryui.com/autocomplete/#custom-data。但是这个例子有太多多余的代码,我不需要。无论如何,json对象不起作用;没有可见的事情发生。我试图将members.Name拉入具有自动完成功能的页面表单中。它不起作用。我不认为我甚至关闭来解决问题。有人可以帮忙吗?

预赛

<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>

OLD JS ARRAY(工作正常)

var players = [ "Addabbo, Eric", "Adeyemon, Murie", "Agok, Peter Panthe", "Ahmed, Jamshed", "Allen, Daniel", "Amato, David Petty"]

OLD JS

<script>$(function() {$( ".autocomplete-2" ).autocomplete({delay: 0, source: window.players, minLength: 2, autoFocus: true});});</script>

NEW JSON OBJECT(不起作用)

var members = 
[
{ "Name": "Ahmed, Jamshed", "cccrEXP": "2018.10.10" },
{ "Name": "Attaya, James", "cccrEXP": "2019.1.12" },
]

NEW JS

<script>
$( function() {

$( ".autocomplete-2" ).autocomplete({
  minLength: 0,
  source: members,
  focus: function( event, ui ) {
    $( ".autocomplete-2" ).val( ui.item.label );
    return false;
  },
      return false;
  }
})

} );
</script>

1 个答案:

答案 0 :(得分:2)

the Autocomplete Widget州的文档:

  

来源:

     

定义要使用的数据,必须指定。

     

数组:数组可用于本地数据。   有两种支持的格式:

     

字符串数组:[&#34; Choice1&#34;,&#34; Choice2&#34; ]

     

具有标签和值属性的对象数组:[{label:&#34; Choice1&#34;,value:&#34; value1&#34; },...]   label属性显示在建议菜单中。当用户选择项目时,该值将插入到input元素中。   如果只指定了一个属性,则它将用于两者,例如if   您只提供值属性,该值也将用作   标签

问题是您的对象没有labelvalue属性。如果可以,请更改对象的格式以使用这些属性。如果你不能这样做,你可以在循环中添加所需的属性,如下所示:

var members = [{
    "Name": "Ahmed, Jamshed",
    "cccrEXP": "2018.10.10"
  },
  {
    "Name": "Attaya, James",
    "cccrEXP": "2019.1.12"
  },
]

$.each(members, function(i, member){
        member.value = member.label = member.Name; // assuming you want to use .Name for both
});

// now you can pass `members` to the autocomplete method