2016-09-05 8 views
2

Я хочу написать пользовательский select2 (версии 4.0), чтобы dots и whitespaces игнорировались при выполнении поиска.Как написать собственный select2 (4.0), который игнорирует пробелы и точки?

Например. Если один из вариантов: Dr. R. N. Pandey, я должен найти Dr. R. N. Pandey, просто набрав rnp в поле поиска.

+0

вы можете добавить некоторые примеры? –

+0

Да, делал это уже. Благодарю. – abhishek77in

ответ

1

Пожалуйста, попробуйте следующее:

HTML:

<select class='select2'> 
    <option>Select</option> 
    <optgroup label="Vegetables"> 
     <option>A. Celery</option> 
     <option>Green R.P Pepper</option> 
     <option>Kale</option> 
    </optgroup> 
    <optgroup label="Fruits"> 
     <option>Apple</option> 
     <option>Orange</option> 
     <option>Banana</option> 
    </optgroup> 
    <optgroup label="Nuts" disabled> 
     <option>Almond</option> 
     <option>Walnut</option> 
     <option>Pine</option> 
    </optgroup> 
</select> 

JS:

(function() { 
    function matcher(term, text) { 

     term = term.toUpperCase(); 
     text = text.toUpperCase().replace(/\./g, '').replace(/\s+/g, ''); 

     if (text.indexOf(term) > -1) { 
      return true; 
     } 

     return false; 
    } 

    $(".select2").select2({ 
     matcher: matcher 
    }); 
})(); 

Пожалуйста, ознакомьтесь с демо (< 4.0):

https://jsfiddle.net/xfw4tmbx/22/

выбрать 2 версии 4,0

https://jsfiddle.net/11a998kw/1/

+0

Этот пример не будет работать для версии 4.0. – abhishek77in

+0

jsfiddle with select2 version 4.0 - https://jsfiddle.net/11a998kw/ – abhishek77in

+0

Хорошо. вот рабочая демонстрация для версии 4.0 https://jsfiddle.net/11a998kw/1/ –

1

Вдохновленный ответ уже предусмотрено:

function ignoreDotAndWhitespace(params, data) { 
    params.term = params.term || ''; 

    term = params.term.toUpperCase(); 
    text = data.text.toUpperCase().replace(/\./g, '').replace(/\s+/g, ''); 

    if (text.indexOf(term) > -1) { 
     return data; 
    } 
    return false; 
    } 

    $('.select2').select2({ 
    matcher: function(params, data) { 
     return ignoreDotAndWhitespace(params, data); 
    } 
    });