Ich verwende Select2, um große Datenlisten zu verwalten. Benutzer haben den Wunsch geäußert, eine Liste in das Feld "Select2" einfügen zu können, um verschiedene Elemente gleichzeitig auszuwählen, anstatt jedes Element in der Liste manuell einzugeben und abzugleichen.Ist es möglich, eine Liste in ein select2-Feld einzufügen und jedes Element in der Liste abzugleichen?
Ich habe versucht, tokenSeparators
zu verwenden, um die Elemente in der Liste zu trennen. Dies und die demo on tokens in the documentation lassen mich glauben, dass das, was ich zu tun hoffe, möglich ist, aber bisher hatte ich keine Freude.
Der Code Ich benutze Select2 zu instanziiert ist:
$('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: [',', ', ', ' ']
});
Nur um zu klären, in jeder anderen Hinsicht die select2 Feldarbeiten. Es ist nur, dass nichts übereinstimmt, wenn eine Liste in das Feld eingefügt wird. Ich möchte alle Elemente in der eingefügten Liste testen. Ist das möglich und wenn ja, wie?
Edit: Ich habe den folgenden Code versucht, aber es scheint nicht zu funktionieren:
$('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);
});
Und hier ist eine Geige ich erstellt habe: http://jsfiddle.net/KCZDu/.
Vielen Dank! Ich kann jetzt dieses Wochenende entspannen! :) –