选择2自定义匹配器

时间:2014-07-12 01:26:21

标签: jquery jquery-select2

我正在尝试将自定义匹配器与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;
    }
});

我做错了什么,以及使这个匹配器功能的正确方法是什么?

1 个答案:

答案 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;
    },
});