2015-01-17 6 views
1

Я хочу использовать несколько select2 с помощью класса, как я делаю в автозаполнении, но я не могу сделать то же самое в select2.получить текущий элемент в select2

вот мой код:

$('.select2-autocomplete').select2({ 
    placeholder: "Search", 
    minimumInputLength: 1, 
    multiple: true, 
    ajax: { 
    url: "http://example.com/autocomplete-results", 
    dataType: 'json', 
    data: function(term, page) { 
     return { 
     q: term, 
     type: $(this.element).data('type') 
     }; 
    }, 
    results: function(data, page) { 
     return { 
     results: data 
     }; 
    } 
    }, 
}); 

Все работает отлично, за исключением этого:

type : $(this.element).data('type') 

Здесь мне нужно значение данных типа Выбор2 элемента, но он всегда неопределенный какие-либо идеи, как я может получить это?

Благодаря

Edit:

<input type="hidden" data-type="products" name="products" class="select2-autocomplete"> 
<input type="hidden" data-type="customers" name="customers" class="select2-autocomplete"> 

Я хочу, чтобы показать результаты, отличные от AJAX, что по этой причине я хочу послать тип данных с помощью AJAX

+0

Есть ли какая-либо конкретная причина, по которой вам необходимо установить тип данных динамически? – Craicerjack

+0

yes У меня есть несколько select2 в моей форме, сервер должен быть в состоянии понять, какой результат должен быть возвращен, поэтому я хочу передать параметр типа на сервер – Mani

+0

Демонстрация была бы полезна. – Nima

ответ

0

Вы можете использовать $(this.context), и он будет возвращать исходный элемент select как объект jQuery.

data: function(term, page) { 
    return { 
    q: term, 
    type: $(this.context).data('type') 
    }; 
}, 
2

Вы можете сделать это захват активного элемент во время события select2: open, а затем использовать его в функции данных

Здесь мой пример:

(function(){ 
var theSelect2Element = null; 
$('.select2-autocomplete').select2({ 
    ... 
    data: function(term, page) { 
     return { 
     q: term, 
     type: $(theSelect2Element).data('type') 
     }; 
    }, 
    ... 
}).on('select2:open', function(e){ 
    theSelect2Element = e.currentTarget; 
}))(); 

Удачи вам!

Смежные вопросы