根据我之前提出的问题建立here
我正在使用jquery ui自动完成功能来创建自动填充表单。在您的帮助下,我成功地将组合框和类别选项组合在一起。现在我想我想把它拿到另一个层次。
我想做的是能够让组合框也搜索optgroup标签以及选项文本。如果文本与optgroup标签匹配,则整个类别都会显示,但它仍然会搜索选项文本。
我猜测编辑需要在下面的块中进行。
response(select.find("option").map(function() {
var text = $(this).text();
if (this.value && (!request.term || matcher.test(text))) return {
label: text.replace(
new RegExp("(?![^&;]+;)(?!<[^<>]*)(" + $.ui.autocomplete.escapeRegex(request.term) + ")(?![^<>]*>)(?![^&;]+;)", "gi"), "<strong>$1</strong>"),
value: text,
option: this,
category: $(this).closest("optgroup").attr("label")
};
}).get());
答案 0 :(得分:0)
您发现了正确的代码部分。这是一个修改后的版本,也可以查看类别:
response(select.find("option").map(function() {
var text = $(this).text(),
category = $(this).closest("optgroup").attr("label");
if(this.value && (!request.term || matcher.test(text) || matcher.test(category))) return {
label: text.replace(new RegExp("(?![^&;]+;)(?!<[^<>]*)(" + $.ui.autocomplete.escapeRegex(request.term) + ")(?![^<>]*>)(?![^&;]+;)", "gi"), "<strong>$1</strong>"),
value: text,
option: this,
category: category.replace(new RegExp("(?![^&;]+;)(?!<[^<>]*)(" + $.ui.autocomplete.escapeRegex(request.term) + ")(?![^<>]*>)(?![^&;]+;)", "gi"), "<strong>$1</strong>")
};
}).get());
matcher.test(text)
)匹配外,我还尝试与选项组标签匹配:matcher.test(category)
。(我无法在my update of your jsfiddle example中进行最后一次修改,但它对我正在进行的项目非常有用)