Ich benutze select2 zum Tagging und ich habe es so eingerichtet, dass ein Benutzer auch neue Tags hinzufügen kann. Das Problem, mit dem ich es zu tun habe, ist die Validierung des Benutzereintrags und das Hinzufügen des bereinigten Tags zur Auswahl.Select2: neues Tag dynamisch hinzufügen mit Code
Um genauer zu sein, wenn ein Benutzer ein Leerzeichen in einem Tag eingibt, verwende ich formatNoMatches, um eine js-Verknüpfung anzuzeigen, um das Tag zu bereinigen und dann das Tag programmgesteuert hinzuzufügen. Dieser Code scheint ohne Fehler zu laufen, aber wenn sanitize aufgerufen wird, werden alle Selektionen der Eingabe gelöscht.
Irgendwelche Hinweise, wo ich vielleicht falsch liege?
var data=[{id:0,tag:'enhancement'},{id:1,tag:'bug'},{id:2,tag:'duplicate'},{id:3,tag:'invalid'},{id:4,tag:'wontfix'}];
function format(item) { return item.tag; }
function sanitize(a){
$("#select").select2('val',[{
id: -1,
tag: a
}]);
console.log(a);
};
$("#select").select2({
tags: true,
// tokenSeparators: [",", " "],
createSearchChoice: function(term, data) {
return term.indexOf(' ') >= 0 ? null :
{
id: term,
tag: term
};
},
multiple: true,
data:{ results: data, text: function(item) { return item.tag; } }, formatSelection: format, formatResult: format,
formatNoMatches: function(term) { return "\"" + term + "\" <b>Is Invalid.</b> <a onclick=\"sanitize('"+ term +"')\">Clear Invalid Charecters</a>" }
});
Dies funktioniert nur bei vorhandenen Tags. –