web-dev-qa-db-fra.com

Ajouter des valeurs à une sélection multiple avec jQuery's select2

J'utilise le plugin select2 jQuery sur un <select> avec multiple="multiple". Je dois ajouter des valeurs à la liste sélectionnée (c’est-à-dire non à toutes les options, mais aux options sélectionnées, sans ajouter de nouvelle option).

Je sais que je peux définir les options sélectionnées avec this :

$("#the_select").select2("val", "the_option_value"); 

Ou, pour plusieurs sélections:

$("#the_select").select2("val", ["an_option_value","another_option_value"]); 

Cependant, est-il possible d'ajouter les options sélectionnées à la liste (c.-à-d. Choisir une option sélectionnée) sans supprimer les autres?

12
Keelan

Vous devriez pouvoir utiliser ceci:

$("#the_select").append($('<option>', {value:"NEWVAL", text: "New Option Text"}));

Il ajoutera le nouvel élément d’option à la fin de la liste.

HTH

Modifier

Prenez 2 :) - J'ai essayé ceci en chrome dev tools sur la page select2. Cela fonctionne (j'ai ajouté "WA" et Washington est apparu.

var selectedItems = $("#the_select").select2("val");
selectedItems.Push("NEWITEMVAL");   // I used "WA" here to test.
$("#the_select").select2("val", selectedItems);

Ou comme une ligne:

$("#the_select").select2("val", $("#the_select").select2("val").concat("NEWITEMVAL"));
34
Sean Kenny

Voici comment je le fais:

      $("#the-select")
        .val($("#the-select")
          .val()
          .concat([array_of_existing_values]));
      $("#the-select")
        .trigger("change");

HTH

0
Shai Efrati