select2多个搜索关键字

时间:2017-09-26 08:00:18

标签: jquery-select2

使用select2插件可以为1个值使用多个搜索关键字

示例:

<select>
  <option data-en="Englisch" data-ar="الإنجليزية" data-cn="英语" data-de="Englisch"  value="AL">English</option>
  <option data-en="arabic" data-ar="عربى" data-cn="阿拉伯" data-de="Arabisch"  value="AL">arabic</option>
  <option data-en="Chinese" data-ar="صينى" data-cn="中文" data-de="Chinesisch"  value="AL">Chinese</option>
</select>

在搜索文件中,如果您使用任何语言(从值或数据属性)进行搜索,它将显示结果

预期结果:

Check This Screenshot

1 个答案:

答案 0 :(得分:0)

您应该能够完全覆盖匹配器功能,如https://select2.org/searching中所宣传的那样。因此,您不仅可以在为用户显示的文本中搜索输入的文本,还可以在选项的元数据中搜索输入的文本。

以下是如何解决此问题的不完整示例:https://jsfiddle.net/gLhckn7z/。 必须改进比较功能。它应检查所有“数据”属性,应比较数据的小写版本等。

$(document).ready(function() {
 $('select').select2({
  matcher: function(params, data) {
    if ($.trim(params.term) === '') return data;
    if (typeof data.text === 'undefined') return null;

    // `params.term` should be the term that is used for searching
    // `data.text` is the text that is displayed for the data object
    if (data.text.indexOf(params.term) > -1 
        || $(data.element).data("de").indexOf(params.term) > -1) {
      var modifiedData = $.extend({}, data, true);
      modifiedData.text += ' (matched)';

      return modifiedData;
    }

    // Return `null` if the term should not be displayed
    return null;
   }
 });
});