数组在自动完成控件中解析为字符串
Array is parsing as string in auto-complete control
我正在使用 EasyAutoComplete 在我的页面上提供自动完成控件。
我将一个数组作为变量传递给它。该变量是一个数组,我可以使用索引对其进行遍历,并且对我来说看起来不错。但是传给这个插件的时候,输入控件只有一个选择,看起来是这样的...
名字 1,名字 2,名字 3
应该是这样的...
姓名1
名字2
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)
您在 availableTechs.data
.
中传递包裹在数组中的数组
你的数组现在看起来像:
[0]=>
[
0=>'name1',
1=>'name2',
2=>'name3'
]
您需要做的是删除该数组包装器。
var availableTechs = {
data: dispatchNames,
};
现在你的输出是:
[
0=>'name1',
1=>'name2',
2=>'name3'
]
我正在使用 EasyAutoComplete 在我的页面上提供自动完成控件。
我将一个数组作为变量传递给它。该变量是一个数组,我可以使用索引对其进行遍历,并且对我来说看起来不错。但是传给这个插件的时候,输入控件只有一个选择,看起来是这样的...
名字 1,名字 2,名字 3
应该是这样的...
姓名1
名字2
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)
您在 availableTechs.data
.
你的数组现在看起来像:
[0]=>
[
0=>'name1',
1=>'name2',
2=>'name3'
]
您需要做的是删除该数组包装器。
var availableTechs = {
data: dispatchNames,
};
现在你的输出是:
[
0=>'name1',
1=>'name2',
2=>'name3'
]