jquery multiselect reload

Comment puis-je append ou supprimer des options dans JQuery UI Multiselect ? J’initialise le multisélection au chargement de la page et je dois supprimer les valeurs existantes et append de nouvelles valeurs en fonction d’une autre sélection. J’initialise le multisélection au chargement de la page en utilisant:

$("#multipleselectboxId").multiselect(); 

Après cela, j’ajoute des valeurs au menu déroulant multiple à l’aide des méthodes jQuery append() et remove() qui fonctionnent correctement avec le menu déroulant d’origine, mais ne sont pas reflétées dans le multiselect.

Quelqu’un peut-il aider avec cela?

Pour celui-là, vous pouvez simplement détruire et réinitialiser après avoir changé …

 $("#multipleselectboxId").append(toAppend).multiselect("destroy").multiselect(); 

Il y a aussi un autre plugin avec une fonction d’actualisation: Multiselect de EricHynds

 $("#multipleselectboxId").append(toAppend).multiselect("refresh"); 

J’ai trouvé la solution pour cela, d’abord détruire le multisélect et le re-initialiser, Merci pour @ Brandon Joyce,

des solutions pour cela est

 $("#multipleselectboxId").append(toAppend); $("#multipleselectboxId").remove(toRemove); $("#multipleselectboxId").multiselect('destroy'); $("#multipleselectboxId").multiselect(); 

J’essayais de reconstruire multiselect par .multiselect("destroy") et .multiselect() , mais cela ne fonctionnait pas, donc j’ai finalement trouvé cette solution qui fonctionnait pour moi.

 $.each(jsonArray, function(i, val) { $('#frmarticles-f_category_id').append('').multiselect('rebuild'); }); 

bien ce plugin fonctionne bien mais j’ai un pb avec destroy et filter: mes données de combo sont chargées avec ajax. Donc, quand je rafraîchit les données avec un appel ajax, j’appelle détruire pour rafraîchir le plugin:

 myCombo.multiselect('destroy'); myCombo.multiselect().multiselectfilter(); 

Cela fonctionne pour le premier appel: combo vide, appel ajax pour charger des données, appelez les fonctions ci-dessus. Mais si j’actualise les données du combo et rappelle les fonctions ci-dessus, le filtre disparaît? Quelqu’un a déjà expérimenté ce pb et a trouvé une solution?

Merci cela a aidé. J’utilisais un widget d’interface utilisateur multisélect et c’est ce qui a fonctionné

 jQuery("select[title='" + FieldNameTitleText + "']").append( "" ).multiselect("refresh"); 

Voici ce que j’ai fait:; c’est peut-être plus que nécessaire, mais cela a fonctionné pour moi.

Code “select” original qui nécessite une modification:

  

Je reconstruis la liste d’options en PHP, l’envoie au JavaScript via JSON et construit / stocke la nouvelle liste dans une variable. Par exemple:

 // this is similar to if we got it from PHP var newList = '  '; 

Maintenant, pour changer ceci dans le widget Multiselect de jQuery UI:

 $('#MySelect').html(''); // clear out old list $('#MySelect').multiselect('destroy'); // tell widget to clear itself $('#MySelect').html(newList); // add in the new list $('#MySelect').multiselect(); // re-initialize the widget 

En particulier, je l’ai réinitialisé avec des parameters, par exemple:

 $('#MySelect').multiselect({selectedList: 4, header: false}); 

Si quelqu’un a lu cela très loin et a toujours des problèmes, essayez-le.

Dans mon cas, je voulais juste remplacer tout le contenu précédent de multiselect par new.

Cela a fonctionné pour moi:

 $('#multiselect_id').html(newHtml); $('#multiselect_id').multiselect('refresh'); 

Je l’ai utilisé de cette façon:

 $("#<%= cmbInBayiID.ClientID %>").multiselect().sortinggger('reset'); 

Ça a marché.

Pour wenzhixin MultiSelect :

 var i = jQuery('input'); i.data('multipleSelect').$parent.remove(); i.removeData('multipleSelect'); i.show(); 
  function setMultiSelect(idElement, paramVal){ eval("$('#"+idElement+"').multiselect('uncheckAll')"); $.each($('input[name="multiselect_'+idElement+'"]'), function(k,i) { if(paramVal.indexOf(this.value)!=-1){ this.checked = true; } }); eval("$('#"+idElement+"').multiselect('update')"); } 
 var valArr = ["1", "2"], i = 0, size = valArr.length, $options = $('#MySelect option'); for (i; i < size; i++) { $options.filter('[value="' + valArr[i] + '"]').prop('selected', true); } $('#MySelect').multiselect('reload'); 

1.valArr correspond aux valeurs de select options
Boucle 2.for pour définir l’option sélectionnée sur correspondante en fonction de valArr
3. Nos modifications sont uniquement dans l'élément de sélection masqué
4.pour changer les éléments générés multisélectionnés, nous devons recharger
Le nom de chaque plugin peut être différent, par exemple: update, refresh