2017-09-26 3 views
0

avec select2 plugins est possible d'utiliser mot-clé de recherche multiple pour 1 valeurselect2 recherche multiple par mot-clé

Exemple:

<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> 

A la recherche déposée si vous effectuez une recherche dans toutes les langues (de valeur ou de données attribut), il affichera le résultat

résultat attendu:

Check This Screenshot

Répondre

0

Vous devez pouvoir remplacer complètement la fonction de correspondance, comme indiqué dans https://select2.org/searching. Ainsi, vous pouvez rechercher le texte saisi non seulement dans le texte affiché pour l'utilisateur, mais également dans les métadonnées de l'option.

Voici un exemple incomplet pour résoudre ce problème: https://jsfiddle.net/gLhckn7z/. La fonction de comparaison doit être améliorée. Il devrait vérifier tous les attributs "de données", devrait comparer les versions minuscules des données, etc.

$(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; 
    } 
}); 
}); 
+0

Cela fonctionne pour de. – XIAN

+0

Ceci est un exemple incomplet. Recherche juste dans le texte et la version "de". Changez en fonction de vos besoins. – Gedrox