数组在自动完成控制中解析为字符串

时间:2018-03-14 19:38:40

标签: jquery arrays string easyautocomplete

我正在使用EasyAutoComplete在我的页面上提供自动完成控制。

我将数组作为变量传递给它。变量是一个我可以通过索引逐步完成的数组,对我来说很好看。但是当传递给这个插件时,输入控件只有一个选择,看起来像这样...

NAME1,NAME2 NAME3

看起来应该是这样......

NAME1
NAME2
NAME3

作为个人选择。这是我的代码......

$(document).ready(function () {

var dispatchNames = [];

$('.square').each(function () {

    //convert each div with .square class toString
    var square = $(this).html().toString();

    //grab availability value (if True, tech is available)
    var availability = $(this).find('tr:eq(4)').find('td').text();

    //grab IP (if exists, tech is online)
    online = $(this).find('tr:eq(3)').find('td').text()        

    if ((availability === "True") && (online.indexOf("10.") === 0)) {

        //grab tech name
        dispatchNames.push([$(this).find('tr:eq(0)').find('td').text()]);

    }

})

var availableTechs = {
  data: [dispatchNames],
};

$("#dispatchTechs").easyAutocomplete(availableTechs);

  //alert(dispatchNames);

})

我可以将'dispatchNames'作为数组逐步执行,但是当我将它传递给'availableTechs'时,它是一个长字符串。

我试过拆分字符串等,结果总是一样。

请告知在传递之前我是否需要为'dispatchNames'做些什么。

谢谢!

修改

easyAutocomplete插件就像这样...

var options = {
  data: ["blue", "green", "pink", "red", "yellow"]
};

$("#basics").easyAutocomplete(options);

我没有为数据提供数组:而是试图在变量中传递一个数组,这显然被视为单个对象。我相信,这是我寻求帮助的原因。

更新

使用匹配...

        var availableTechs = {

    data: dispatchNames,
    list: {
        match: {
            enabled: true
        }
    }

};

$("#dispatchTech").easyAutocomplete(availableTechs);

})

使用匹配时出现以下控制台错误:

7jquery.easy-autocomplete.js:64 Uncaught TypeError: element.search is not a function
    at Object.method (jquery.easy-autocomplete.js:64)
    at match (jquery.easy-autocomplete.js:653)
    at findMatch (jquery.easy-autocomplete.js:630)
    at proccessData (jquery.easy-autocomplete.js:613)
    at ListBuilderService.processData (jquery.easy-autocomplete.js:455)
    at loadData (jquery.easy-autocomplete.js:1338)
    at HTMLInputElement.<anonymous> (jquery.easy-autocomplete.js:1308)
    at HTMLInputElement.dispatch (jquery-3.3.1.js:5183)
    at HTMLInputElement.elemData.handle (jquery-3.3.1.js:4991)

1 个答案:

答案 0 :(得分:1)

您正在availableTechs.data中传递包含在数组中的数组。

目前你的阵列看起来像是:

[0]=>
  [
   0=>'name1', 
   1=>'name2', 
   2=>'name3'
  ]

您需要做的是删除该数组包装器。

var availableTechs = {
  data: dispatchNames,
};

现在您的输出是:

[
  0=>'name1', 
  1=>'name2', 
  2=>'name3'
]