Unten ist mein Code für eine Select2 Box. Ich brauche Werte (Tags), die bereits einem Datensatz zugewiesen sind, um ihn zu zeigen, dies wird durch die Werte AAA
und BBB
dargestellt. Dann muss ich in einer Liste von Werten, die ausgewählt werden sollen, eine Anjax-Funktion verwenden, wenn sie neue Werte (Tags) zu den bereits vorhandenen hinzufügen möchten. Alles funktioniert, außer wenn sie einen neuen Wert (Tag) auswählen, um ihn hinzuzufügen, ersetzt er die vorhandenen, verschwinden sie. Ich brauche sie, um zu bleiben.select2 Anfangswerte werden ersetzt, wenn ein neuer Wert ausgewählt wird
<select class="myTags" style="width:100%" multiple="multiple"></select>
<script>
function formatResults(item) {
if (item.loading) return 'Loading...';
return '<div style="font-size:100%;">'+
'<div style="padding:5px;">'+
'<span style="background-color:##e4e4e4; color:##000000; border:1px solid ##aaa; padding:5px;">'+
item.tag+
'</span>'+
'<span style="padding:5px;">'+
' x '+item.popularity+
'</span>'+
'<p style="margin-bottom:0px;">'+
item.description+
'</p>'+
'</div>'+
'</div>';
}
function formatSelection(item) {
return item.tag;
}
jQuery(".myTags").select2({
placeholder: "add a tag, max 20 tags",
maximumSelectionLength: 20,
minimumInputLength: 2,
templateResult: formatResults,
templateSelection: formatSelection,
initSelection: function (element, callback) {
var data = [{ "tag": "AAA", "id": "111" },{ "tag": "BBB", "id": "222" }];
callback(data);
},
escapeMarkup: function (markup) { return markup; }, // let select2's custom formatter work
ajax: {
url: "tags.cfc?method=json_get_valtags",
dataType: 'json',
data: function (params) {
return {
q: params.term
};
},
processResults: function (data) {
return {
results: jQuery.map(data, function (item) {
return {
id: item.UNID,
tag: item.TAG,
description: item.DESCRIPTION,
popularity: item.POPULARITY
}
})
};
}
}
});
</script>