我正在尝试将自定义匹配器与select2库一起使用。具体来说,我想返回other
作为未找到的选项,并且只从字符串的开头匹配。我发现以下问题分别回答了这些部分:
Select2, when no option matches, "other" should appear
和
jquery select2 plugin how to get only the result 'myString%'
但是,当我将这两种技术结合使用时,它就不再适当匹配了。我的解决方案如下:
$("#myForm").select2({
minimumInputLength: 2,
width: width,
matcher: function(term, text) {
// THIS IS WHERE I COMBINE THE METHODS
return text === 'Other' || text.toUpperCase().indexOf(term.toUpperCase())==0;
},
sortResults: function(results) {
if (results.length > 1) results.pop();
return results;
}
});
我做错了什么,以及使这个匹配器功能的正确方法是什么?
答案 0 :(得分:5)
我使用正则表达式并将条件||
分成两个步骤来完成此操作。最终的代码是:
$("#myForm").select2({
minimumInputLength: 2,
width: width,
matcher: function(term, text) {
var terms = term.split(" ");
for (var i=0; i < terms.length; i++){
var tester = new RegExp("\\b" + terms[i], 'i');
if (tester.test(text) == false){
return (text === 'Other')
}
}
return true;
},
sortResults: function(results) {
if (results.length > 1) {
results.pop();
}
return results;
},
});