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');
change
événement (comme recharger le formulaire). Sinon, ces actions seraient appelées de manière redondante lorsqu'elles sont déclenchéeschange()
.onChange
)En regardant les documents select2, vous utilisez ce qui suit pour obtenir / définir la valeur.
@PanPipes a souligné que cela avait changé pour 4.x (allez lui donner un vote positif ci-dessous).
val
s'appelle maintenant directement$("#select").val("CA");
Ainsi, dans le
loadComplete
jqGrid, vous pouvez obtenir la valeur que vous recherchez, puis définir la valeur de la boîte de sélection.Avis de la documentation
la source
val
appel.<select>
converti enselect2
contrôle en testant l'existence de la classeselect2-offscreen
sur le<select>
. Tous les éléments de la barre d'outils de recherche ont un identifiant qui commence par legs_
préfixe et porte le nom comme danscolModel
. Vous pouvez utilisergetGridParam
pour obtenircolModel
.select2
sélection. Je vais jeter un autre coup d'œil aujourd'hui, peut-être qu'avec des yeux neufs, je peux le réparer. Merci encore. Mise à jour: encapsuler le code dans une vérification booléenne a résolu le problème que j'avais, bien que cela ait arrêté d'actualiser la barre de recherche plutôt que de sélectionner à nouveau l'élément précédent.cela devrait être utile.
la source
Cela devrait être encore plus facile.
Mais assurez-vous que les valeurs que vous passez sont déjà présentes dans le HTMl
la source
Si vous souhaitez ajouter un nouveau
value='newValue'
ettext='newLabel'
, vous devez ajouter ce code:Ajouter une nouvelle option à
<select>
:Déclencher le
<select>
changement à la valeur sélectionnée:la source
Je voulais juste ajouter une deuxième réponse. Si vous avez déjà rendu le select en tant que select2 , vous devrez le refléter dans votre sélecteur comme suit:
la source
Vous avez deux options - comme l'indique la réponse @PanPipes, vous pouvez effectuer les opérations suivantes.
Il s'agit d'une solution acceptable uniquement si aucune action personnalisée n'est liée à l'événement de modification. La solution que j'utilise dans cette situation est de déclencher un événement spécifique à select2 qui met à jour la sélection affichée à select2.
la source
Ayant quelques problèmes avec la définition d'une option de chaîne sélectionnée dans un select2:
Avec l'option: "option string1 / option" utilisée:
MAIS avec une option avec une valeur: valeur d'option "E" string1 / option:
Espère que cela aide quelqu'un aux prises avec le même problème.
la source
si vous souhaitez sélectionner une seule valeur, utilisez
$('#select').val(1).change()
si vous souhaitez sélectionner plusieurs valeurs, définissez la valeur dans le tableau afin que vous puissiez utiliser ce code
$('#select').val([1,2,3]).change()
la source
Pour V4, Select2 si vous souhaitez modifier à la fois la valeur de select2 et la représentation textuelle de la liste déroulante.
Cela définira non seulement la valeur dans les coulisses, mais également l'affichage du texte pour le select2.
Tiré de https://select2.github.io/announcements-4.0.html#removed-methods
la source
Mon code attendu:
fonctionne parfaitement grâce à @PanPipes pour l'utile.
la source
fais ça
la source
si vous avez une source de données ajax, veuillez vous référer à ceci pour éviter les bogues
https://select2.org/programmatic-control/add-select-clear-items
// Configurer le contrôle Select2
// Récupère l'élément présélectionné et l'ajout au contrôle
la source
si vous souhaitez définir un élément sélectionné lorsque vous connaissez le texte de la liste déroulante et que vous ne connaissez pas la valeur, voici un exemple:
Supposons que vous ayez trouvé un fuseau horaire et que vous vouliez le définir, mais que les valeurs y figurent
time_zone_id
.la source
Police: Sélectionnez 2 documentation
la source
vous pouvez simplement utiliser la méthode get / set pour définir la valeur
ou vous pouvez faire ceci:
la source