J'utilise Select2 (via CDN/version la plus récente) avec des données chargées à partir d'un tableau. (Notez que les données sont extraites via AJAX/JSON, mais en raison de circonstances inhabituelles, elles sont chargées via un tableau.) Je dois sélectionner par programme une valeur via le texte, pas un ID. Je peux obtenir cela pour travailler via un ID, mais pas de texte. Alors que je peux boucle manuellement à travers le réseau, et déterminer l'ID, et sélectionnez l'ID, je suppose qu'il ya une façon plus élégante ...Définition de la valeur de texte dans Select2
Voici quelques fragments de code ...
// Now load all the elements into the array, which comes from AJAX
for (i = 0; i < rowCount; i++) {
myData.push({id: i, text: comp_data.rows[i].NN_NAME});
}
// create my Select2 control
var $mySelectControl = $(".mySelect").select2({
data: myData,
width:300,
placeholder: "Select an account",
allowClear: true
});
À un moment ultérieur, je souhaite sélectionner par programme «Mainstay Electric». Je peux sélectionner si je connais l'ID, mais ne peux pas trouver comment sélectionner si je connais juste le texte.
// THIS WORKS
$(".mySelect").val(null).trigger("change");
//.. but not this
$(".mySelect").val('Mainstay Electric').trigger("change");
Lors de l'examen d'autres questions, je trouve cet exemple, je ... modifié
$(".mySelect").select2("trigger", "select", {
data: { text: 'Mainstay Electric' }
});
... mais cela donne une erreur JavaScript a.ID est définie.
En dehors de la boucle du tableau myData pour obtenir l'ID et l'utiliser, y a-t-il un moyen de simplement passer le texte (à savoir le 'Mainstay Electric')?
Merci
Daniel - Cela fonctionne, mais je pense qu'il ya une mise en garde ... Mon contrôle SELECT2 a 7000 noms d'entreprises. Vous utilisez la fonction CONTAINS dans votre exemple. C'est fondamentalement une fonction de sous-chaîne. Si je cherche 'Jones Electric', cela correspondrait pour la première fois à Baker Jones Electric Corporation. Existe-t-il une fonction EQUALS ou EXACT MATCH au lieu d'une fonction CONTAINS? – user1009073
@ user1009073 ok. utilisez une fonction comme 'getOptId' qui va chercher dans la liste déroulante et obtenir l'identifiant, de cette façon c'est exactement la correspondance –
@ user1009073 voir le code mis à jour, l'option 4 est la dernière, 2 option similaire avant elle. –