select2: sélection par défaut dans multiple select avec AJAX

je suis en utilisant le génial select2 pour créer un combo de sélection multiple.

je voudrais programmer les valeurs par défaut (comme dans les sélections faites précédemment par l'utilisateur), mais je ne sais pas comment. J'ai lu que l'utilisation de initSelection fait l'affaire mais cela s'appelle lors de la création du combo et je ne veux pas que cette sélection par défaut soit toujours faite.

20
demandé sur j0k 2013-04-22 12:47:23

10 réponses

bonne solution dans la version 4.x par exemple:

$('#element').val(['val1','val2']).trigger('change');

voir: créateur description

12
répondu Ramin Firooz 2016-12-18 07:49:29

j'ai trouvé des solutions, peut-être vous aider:

$('#el').select2({...}) // init select2

var defaultData = [{id:1, text:'Item1'},{id:2,text:'Item2'},{id:3,text:'Item3'}];

$('#el').data().select2.updateSelection(defaultData);
5
répondu sanj 2013-05-22 14:22:12

à Partir de la page de documentation:

" val - Obtient ou définit la sélection. Si la valeur du paramètre n'est pas spécifié, l'attribut id de l'élément actuellement sélectionné est retourné. Si le paramètre value est spécifié, il deviendra la sélection courante."

en outre, à partir de la documentation:

$("#e8").select2("val", "CA");
3
répondu pulzarraider 2014-02-01 09:17:00

Comme indiqué dans la documentation ici, vous pouvez simplement ajouter 'options' à votre markup select pour que les valeurs initiales par défaut soient présélectionnées.

<select class="js-data-example-ajax">
  <option value="3620194" selected="selected">select2/select2</option>
</select>
3
répondu Thomas Clowes 2016-01-25 18:07:50

$('#el').select2().val(['val1','val2']).trigger("change")

le truc, mais pour certaines raisons, il supprime la possibilité d'ajouter votre propre étiquette...

2
répondu sebap 2016-08-09 17:46:59

j'ai passé en boucle un tableau de valeurs, puis défini chaque option qui correspond à ("selected", true)

values = [2, 5, 3]

for val in values
  $("#selects_id option[value="+val+"]").prop("selected",true).trigger("change")

Vous pouvez également faire avec les résultats que vous obtenez d'un appel Ajax.

1
répondu longJOURNEY 2017-12-12 18:12:19

le code suivant fonctionne bien, mais le select2 besoin d'être rafraîchi

$('#el').data().select2.updateSelection(defaultData);
0
répondu Fayez Barbari 2014-01-13 12:12:35

étendre sur @sanj réponse. Cela semble fonctionner pour moi dans mes projets.

Via HTML

HTML

<select class="select2" style='width:100%;' multiple>
    <option val=''>Please choose</option>
    <option val="1" selected>One</option>
    <option val="2" selected>Two</option>
    <option val="3">Three</option>
</select>

JS

$('.select2').select2();

les Résultats enter image description here

Via Javascript

HTML

<select class="select2" style='width:100%;' multiple>
    <option val=''>Please choose</option>
    <option val="1">One</option>
    <option val="2">Two</option>
    <option val="3">Three</option>
</select>

JS

$('.select2').select2();
var defaultData = [{id:1, text:'One'},{id:2,text:'Two'}];
$('.select2').data().select2.updateSelection(defaultData);

les Résultats enter image description here

0
répondu Louwki 2016-11-08 10:40:32

Compris, enfin!! Select2 itère à travers le <option> balise en vertu de l' <select>.

<select class="js-data-example-ajax" style="width:100%">
  <option value="3620194" selected="selected">Put the pre-selected options here</option>
</select>

le html interne du <option> est placé dans l'objet repo sous la touche texte. Donc repo.text donnera l'innerhtml. Qui est, tout ce que nous avons à faire est de l'approvisionnement repo.textformatSelection option dans l'init. De même, le json passé depuis le servlet (controller) doit avoir le texte d'étiquette désiré placé sous le text la clé!! Encore de comprendre comment ajouter des attributs à la li les éléments créés, afin que je puisse enregistrer les modifications de la liste. Des idées?

0
répondu Ab Sin 2017-03-30 10:26:18

Vous pouvez trouver une solution ici avec Une auto complète, plusieurs liste déroulante de sélection utilisant JQuery select 2.

lie les données avec un élément HTML " select "qui est ensuite repris par les fonctions" Select2 " pour les convertir en une belle liste déroulante multi-select.

il pourrait bien fonctionner en utilisant AJax et va certainement essayer dans les prochains jours.

-1
répondu Arun Banik 2013-07-14 06:00:01