2013-04-15 3 views
7

J'utilise select2 à la place du champ de recherche.Charger les valeurs dans select2 multiselect

Ici j'utilise pour charger les pays valeurs comme cette

$("#countries").select2({ 
    multiple: true, 
    tags:["India", "Japan", "Australia","Singapore"], 
    tokenSeparators: [","] 
}); 

Lorsque je presse le bouton Enregistrer, ils sont correctement soumis au serveur, maintenant ici la question est quand je veux modifier le champ pays après avoir enregistré sur le serveur, comment je peux charger les valeurs enregistrées dans le champ de pays.

Voici comment je récupérer des données à partir du serveur

$.getJSON('/dataprovider?data=fetchCountriesForm', function(opts) { 

    //the opts here contains the json values of the countries. 

    //what code should be written here to load the values in $('#countries).select2(); 

    //user can add some more countries or can remove the previously added countries. 

} 

Répondre

4

I il suffit d'utiliser ce lien http://ivaynberg.github.io/select2/#event_ext_change et d'utiliser la fonction de déclenchement pour charger les valeurs

$.getJSON('/dataprovider?data=fetchCountriesForm', function(opts) { 
     parent.parent.parent.showLoader(); 
     if (opts) { 
      $("#countries").val(opts).trigger("change"); 
     } 

Cette astuce charge la valeur dans la zone de sélection.

+2

Je sais que c'est vieux alors pardonnez-moi, mais cela ne semble pas fonctionner avec un tableau bidimensionnel? Je peux charger des valeurs telles que ('chien', 'chat', 'souris') mais pas ('1': 'Chien', '2': 'Chat', '3': 'Souris'). Avez-vous pu le faire? – SBB

8

S'il vous plaît un coup d'oeil une documentation vertu de l'article Loading Remote Data.

Vous trouverez et exemple comme:

$("#e6").select2({ 
    placeholder: "Search for a movie", 
    minimumInputLength: 1, 
    ajax: { 
      // instead of writing the function to execute the request we use Select2's convenient helper 
      url: "http://api.rottentomatoes.com/api/public/v1.0/movies.json" 
      // Other stuffs 
      } 
}); 

Aussi, vous pouvez faire comme ceci:

$.getJSON('/dataprovider?data=fetchCountriesForm', function(opts){ 
    $("#countries").select2({ 
     data: opts 
    }); 
}) 

Vos JSON données doivent être au format comme ci-dessous:

[{id:0,text:'enhancement'}, 
{id:1,text:'bug'}, 
{id:2,text:'duplicate'}, 
{id:3,text:'invalid'}, 
{id:4,text:'wontfix'} 
] 
+2

Je crois que les données extraites de l'URL sont chargées dans la boîte de recherche sur un événement d'utilisateur. Comme les types d'utilisateurs, la valeur est récupérée et il sélectionne la valeur. Ce que je veux ici est de charger toutes les valeurs extraites de json sans aucun événement utilisateur. @Kishor Subedi – rkj

+0

@rohit S'il vous plaît vérifier la modification. –

+1

Merci @Kishor pour l'aide, mais j'ai trouvé un moyen plus facile de le faire, j'ai juste utilisé la fonction de déclenchement pour charger les valeurs. – rkj

Questions connexes