SELECT2 -> Ajouter des données sans remplacer le contenu

J'ai jeté un coup d'oeil à d'autres fils de discussion, mais rien d'aussi précis. Ce n'est pas vraiment quelque chose que je supposerais, mais je ne suis pas sûr de faire ça.

Actuellement, j'utilise Select2 pour un système de marquage et, à côté de cela, j'ai proposé des tags sur lesquels les utilisateurs pourraient cliquer dessus et ajouter à la boîte.

Au lieu de cela, chaque balise remplace le contenu et s'ajoute lui-même.

J'ai besoin de l'ajouter pour être ajouté dans la boîte sans remplacer ce qui existe déjà.

Voici mon code:

$(document).on('click', ".tag1", function () { var value = $(".tag1").html(); console.log(value); $("#selectPretty").val([value]).trigger("change"); }); $(document).on('click', ".tag2", function () { var value = $(".tag2").html(); console.log(value); $("#selectPretty").val([value]).trigger("change"); }); 

Les données sont tirées via AJAX avec une portée autour de chaque étiquette proposée.

J'espère que je suis assez clair.

Résumé: Je veux pouvoir cliquer sur chaque «étiquette» et pour qu'elle soit ajoutée, mais elle remplace ce qui était déjà dans la boîte.

Merci

Vous devriez pouvoir le faire avec:

 var test = $('#test'); $(test).select2({ data:[ {id:0,text:"enhancement"}, {id:1,text:"bug"}, {id:2,text:"duplicate"}, {id:3,text:"invalid"}, {id:4,text:"wontfix"} ], multiple: true, width: "300px" }); var data = $(test).select2('data'); data.push({id:5,text:"fixed"}); $(test).select2("data", data, true); // true means that select2 should be refreshed 

Exemple de travail: http://jsfiddle.net/z96Ca/

Vous remplacez la valeur par val(mystuff) . Vous souhaitez effectuer les opérations suivantes:

  1. Obtenez les données actuelles dans l'entrée avec val()

    var dataOld = $('#selectPretty').val();

  2. Ajoutez les nouvelles données avec quelque chose comme *

    var dataNew = dataOld.push(value);

  3. Définissez les données d'entrée dans de nouvelles données:

    $('#selectPretty').val(dataNew);

* Ceci suppose que val() renvoie un tableau

Docs