Używam Select2 do zarządzania dużymi listami danych. Użytkownicy wyrazili chęć, aby móc wkleić listę do pola Select2, aby wybrać różne elementy na raz, zamiast ręcznie wprowadzać i dopasowywać każdy element na liście.Czy można wkleić listę do pola select2 i dopasować do każdej pozycji na liście?
Próbowałem użyć tokenSeparators
, aby oddzielić pozycje na liście. To i demo on tokens in the documentation doprowadziło mnie do przekonania, że to, co mam nadzieję zrobić, jest możliwe, ale do tej pory nie miałem żadnej radości.
Kod używam instancji select2 jest:
$('input').select2({
width: 'element',
matcher: function (term, text) {
return text.toUpperCase().indexOf(term.toUpperCase()) === 0;
},
minimumInputLength: 3,
multiple: true,
data: tagList, // tagList is an array of objects with id & text parameters
placeholder: 'Manage List',
initSelection: function (element, callback) {
var data = [];
$.each(function() {
data.push({id: this, text: this});
});
callback(data);
},
tokenSeparators: [',', ', ', ' ']
});
Właśnie w celu wyjaśnienia, we wszystkich innych aspektach pracach polowych select2. Po prostu nic nie jest dopasowane, gdy lista jest wklejana na pole. Chciałbym przetestować wszystkie elementy na wklejonej liście. Czy to możliwe, a jeśli tak, to w jaki sposób?
Edit: Próbowałem poniższy kod, ale nie wydaje się działać:
$('body').on('paste', '#s2id_list-unitids .select2-input', function() {
var that = this;
setTimeout(function() {
var tokens = that.value.split(/[\,\s]+/);
$('#list-unitids').val(tokens, true);console.log($('#list-unitids').select2('val'));
}, 1);
});
A oto skrzypce Utworzona: http://jsfiddle.net/KCZDu/.
Dziękujemy! Mogę teraz odpocząć w ten weekend! :) –