Cela appartient aux codes antérieurs à select2 version 4
J'ai un code simple select2
pour obtenir des données d'ajax
$("#programid").select2({
placeholder: "Select a Program",
allowClear: true,
minimumInputLength: 3,
ajax: {
url: "ajax.php",
dataType: 'json',
quietMillis: 200,
data: function (term, page) {
return {
term: term, //search term
flag: 'selectprogram',
page: page // page number
};
},
results: function (data) {
return {results: data};
}
},
dropdownCssClass: "bigdrop",
escapeMarkup: function (m) { return m; }
});
Ce code fonctionne, cependant, je dois définir une valeur dessus comme si en mode édition. Lorsque l'utilisateur sélectionne une valeur pour la première fois, elle sera enregistrée et quand il aura besoin de modifier cette valeur, elle doit apparaître dans le même menu de sélection ( select2
) pour sélectionner la valeur précédemment sélectionnée, mais je ne trouve pas de moyen.
METTRE À JOUR:
Le code HTML:
<input type="hidden" name="programid" id="programid" class="width-500 validate[required]">
L'accès par programme Select2 ne fonctionne pas avec cela.
javascript
php
jquery
ajax
jquery-select2
Clarifier les deux
la source
la source
$("#programid").val()
Réponses:
Pour définir dynamiquement la valeur "sélectionnée" d'un composant Select2:
Où le deuxième paramètre est un objet avec des valeurs attendues.
METTRE À JOUR:
Cela fonctionne, je voulais juste noter que dans le nouveau select2, "a_key" est "text" dans un objet select2 standard. alors:
{id: 100, text: 'Lorem Ipsum'}
Exemple:
Merci à @NoobishPro
la source
$('#inputID').val(100).trigger('change')
Voir select2.github.ioÉtape n ° 1: HTML
Étape # 2: Créez une instance de Select2
Étape n ° 3: définissez la valeur souhaitée
Si vous utilisez select2 sans AJAX, vous pouvez procéder comme suit:
Vous pouvez également le faire:
Pour select2 v4, vous pouvez ajouter directement une / des option (s) comme suit:
Ou avec JQuery:
autre exemple
la source
Html:
JavaScript:
jsfiddle
la source
De plus, comme j'ai essayé, lorsque j'utilise ajax dans select2, les méthodes de contrôle par programmation pour définir de nouvelles valeurs dans select2 ne fonctionnent pas pour moi! Maintenant, j'écris ces codes pour résoudre le problème:
Vous pouvez tester un exemple de code complet dans le lien ici: https://jsfiddle.net/NabiKAZ/2g1qq26v/32/
Dans cet exemple de code, il existe un ajax select2 et vous pouvez définir une nouvelle valeur avec un bouton.
Afficher l'extrait de code
la source
Essayez cet ajout, puis sélectionnez. Ne duplique pas l'option lors de l'appel AJAX.
la source
J'ai aimé ça
la source
Dans la version actuelle sur
select2
-v4.0.1
vous pouvez définir la valeur comme ceci:la source
destroy
appeler à nouveau le plugin .. Voir le code mis à jour ..so that I wouldn't have to duplicate them
Pourquoi faut-il les dupliquer? Quand vous faitesdestroy
leselect
est toujours là avec tout le sienoptions
.$example.select2({ ... this ... })
Pour Ajax, utilisez
$(".select2").val("").trigger("change")
. Cela devrait résoudre le problème.la source
Je pense que tu as besoin de la
initSelection
fonctionla source
HTML
JS
source: https://select2.github.io/options.html
la source
Dans Select2 V.4
utilisation
$('selector').select2().val(value_to_select).trigger('change');
Je pense que ça devrait marcher
la source
Définissez la valeur et déclenchez immédiatement l'événement de modification.
la source
J'ai résolu mon problème avec ce code simple. Où #select_location_id est un ID de la boîte de sélection et la valeur est la valeur d'une option répertoriée dans la boîte de sélection2.
la source
La réponse d'un Phan a fonctionné pour moi:
Mais l'ajout du changement déclenche l'événement
la source
vous pouvez utiliser ce code:
où 2 dans «nombre: 2» et 3 dans «nombre: 3» sont le champ id dans le tableau d'objets
la source
Parfois,
select2()
sera le chargement en premier, ce qui empêche le contrôle d'afficher correctement la valeur précédemment sélectionnée. Un délai de quelques secondes peut résoudre ce problème.la source
Il serait plus approprié de postuler
select2
après avoir choisi l'une des sélections actuelles.la source
J'ai fait quelque chose comme ça pour prérégler des éléments dans la liste déroulante select2 ajax
la source
Tu devrais utiliser:
la source
Si vous utilisez une zone de saisie, vous devez définir la propriété "multiple" avec sa valeur "true". Par exemple,
la source
Dans
select2 < version4
il y a l'optioninitSelection()
pour le chargement de données à distance, grâce à laquelle il est possible de définir la valeur initiale de l'entrée comme en mode d'édition.Documentation source: Select2 - 3.5.3
la source
Juste pour ajouter à tous ceux qui ont peut-être rencontré le même problème avec moi.
J'essayais de définir l'option sélectionnée de mes options chargées dynamiquement (à partir d'AJAX) et j'essayais de définir l'une des options comme sélectionnée en fonction d'une logique.
Mon problème est venu parce que je n'essayais pas de définir l'option sélectionnée en fonction de l'ID qui doit correspondre à la valeur, et non à la valeur correspondant au nom!
la source
Pour plusieurs valeurs, quelque chose comme ceci:
qui se traduira par quelque chose comme ça
la source
Cela peut aider quelqu'un à charger des données select2 à partir d'AJAX lors du chargement des données pour l'édition ( applicable pour une ou plusieurs sélections ):
Pendant le chargement de mon formulaire / modèle:
Appelez pour sélectionner les données pour Select2:
et si vous rencontrez des problèmes avec le codage, vous pouvez changer selon vos besoins:
la source
si vous récupérez vos valeurs d'ajax, avant d'appeler
confirmez que l'appel ajax est terminé, en utilisant la fonction jquery lorsque
la source
Pour construire sur la réponse de @ tomloprod. Par chance que vous utilisiez x-editable , que vous ayez un champ select2 (v4) et que vous ayez plusieurs éléments à présélectionner. Vous pouvez utiliser le morceau de code suivant:
et le voici en action:
Je suppose que cela fonctionnerait même si vous n'utilisez pas x-editable. J'espère que cela pourra aider quelqu'un.
la source
Vous pouvez utiliser ce code:
Mettez la valeur souhaitée au lieu de Your_value
J'espère que cela fonctionnera :)
la source
Agréable et facile:
Et vous passez
id_city
à l'identifiant de votre sélection.Edit: Après le commentaire de Glen, je me rends compte que je devrais expliquer pourquoi et comment cela a fonctionné pour moi:
J'avais rendu le
select2
travail vraiment agréable pour ma forme. La seule chose que je ne pouvais pas faire était d'afficher la valeur actuelle sélectionnée lors de l'édition. Il recherchait une API tierce, sauvegardant de nouveaux enregistrements et modifiant les anciens enregistrements. Au bout d'un moment, j'ai réalisé que je n'avais pas besoin de définir correctement la valeur, seulement l'étiquette à l'intérieur du champ, car si l'utilisateur ne change pas le champ, rien ne se passe. Après avoir cherché et examiné beaucoup de gens qui avaient des problèmes, j'ai décidé de le faire avec du Javascript pur. Cela a fonctionné et j'ai posté pour peut-être aider quelqu'un. Je suggère également de régler une minuterie pour cela.la source