Sto usando Select2 per gestire elenchi di dati di grandi dimensioni. Gli utenti hanno espresso il desiderio di essere in grado di incollare un elenco nel campo Select2 per selezionare vari elementi contemporaneamente anziché inserire e abbinare manualmente ciascun elemento nell'elenco.È possibile incollare un elenco in un campo select2 e abbinare ciascun elemento nell'elenco?
Ho tentato di utilizzare tokenSeparators
per separare gli elementi nell'elenco. Questo e lo demo on tokens in the documentation mi portano a credere che ciò che spero di fare sia possibile, ma finora non ho avuto gioia.
Il codice che uso per istanziare Select2 è:
$('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: [',', ', ', ' ']
});
solo per chiarire, in tutti gli altri aspetti le opere di campo select2. È solo che nulla viene abbinato quando una lista viene incollata nel campo. Vorrei testare tutti gli elementi nell'elenco incollato. È possibile e, in tal caso, come?
Edit: Ho provato il seguente codice ma non sembra funzionare:
$('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);
});
Ed ecco un violino che ho creato: http://jsfiddle.net/KCZDu/.
Grazie! Ora posso rilassarmi questo fine settimana! :) –