Pour la version select2> = 4.0.0
Les autres solutions peuvent ne pas fonctionner, mais les exemples suivants devraient fonctionner.
Solution 1: provoque le déclenchement de tous les événements de modification attachés, y compris select2
$('select').val('1').trigger('change');
Solution 2: provoque le déclenchement de l'événement de changement JUST select2
$('select').val('1').trigger('change.select2');
Voir ce jsfiddle pour des exemples de ceux-ci. Merci à @minlare pour la solution 2.
Explication:
Disons que j'ai un meilleur ami sélectionner avec les noms des gens. Donc Bob, Bill et John (dans cet exemple, je suppose que la valeur est la même que le nom). J'initialise d'abord select2 sur mon select:
$('#my-best-friend').select2();
Maintenant, je sélectionne manuellement Bob dans le navigateur. Ensuite, Bob fait quelque chose de méchant et je ne l'aime plus. Le système désélectionne donc Bob pour moi:
$('#my-best-friend').val('').trigger('change');
Ou disons que je demande au système de sélectionner le suivant dans la liste au lieu de Bob:
// I have assume you can write code to select the next guy in the list
$('#my-best-friend').val('Bill').trigger('change');
Remarques sur le site Web Select 2 (voir Méthodes obsolètes et supprimées ) qui pourraient être utiles pour d'autres:
.select2 ('val')
La méthode "val" est obsolète et sera supprimée dans Select2 4.1. La méthode obsolète n'inclut plus le paramètre triggerChange.
Vous devez plutôt appeler directement .val sur l'élément sous-jacent. Si vous avez besoin du deuxième paramètre (triggerChange), vous devez également appeler .trigger ("change") sur l'élément.
$('select').val('1').trigger('change'); // instead of $('select').select2('val', '1');