在JQuery自动完成中,由于Jquery插件本身正在修剪下拉项目,因此在单词之间具有多个空格差异的类似项目在下拉列表中显示为重复项目。
var validOptions =["Item 1", "Item 1", "Item 1", "Item 2", "Item 2"];
previousValue = "";
$('#ac').autocomplete({
autoFocus: true,
source: validOptions,
}).keyup(function() {
var isValid = false;
for (i in validOptions) {
if (validOptions[i].toLowerCase().match(this.value.toLowerCase())) {
isValid = true;
}
}
if (!isValid) {
this.value = previousValue
} else {
previousValue = this.value;
}
});
有没有办法在下拉项中显示这样的值。
答案 0 :(得分:2)
你需要在HTML渲染过程中为li元素white-space: pre-wrap
应用微小的css。
这是完整的代码段
var validOptions = ["Item 1", "Item 1", "Item 1", "Item 2", "Item 2"];
previousValue = "";
$('#ac').autocomplete({
autoFocus: true,
source: validOptions
})
.keyup(function() {
var isValid = false;
for (i in validOptions) {
if (validOptions[i].toLowerCase().match(this.value.toLowerCase())) {
isValid = true;
}
}
if (!isValid) {
this.value = previousValue
} else {
previousValue = this.value;
}
}).autocomplete("instance")._renderItem = function(ul, item) {
return $("<li style='white-space: pre-wrap'>")
.append(item.label)
.appendTo(ul);
};
工作小提琴:http://jsfiddle.net/ankurgarg36/kwLmLumd/23/
此.autocomplete("instance")._renderItem
函数不适用于您的js版本。所以我需要使用建议的最新版本here