jquery multiselect reload

时间:2011-12-28 07:58:29

标签: jquery jquery-ui

如何在JQuery UI Multiselect中添加或删除选项?我正在初始化页面加载上的多选,我需要删除现有值并根据其他选择添加新值。我正在使用以下命令初始化页面加载上的多选:

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

之后,我使用jQuery append()remove()方法为多个下拉列表添加值,这些方法在原始下拉列表中正常工作但在多选中没有得到反映。

任何人都可以帮忙吗?

12 个答案:

答案 0 :(得分:23)

对于那个,你可以在改变后摧毁并重新初始化......

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

还有另一个带有刷新功能的插件:EricHynds's Multiselect

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

答案 1 :(得分:14)

我找到了解决方法,首先销毁多选并重新初始化它,谢谢@ Brandon Joyce,

解决方法是

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

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

答案 2 :(得分:3)

我试图通过.multiselect("destroy").multiselect()重建多重选择,但它没有用,所以最后我觉得这个解决方案适合我。

$.each(jsonArray, function(i, val) {
    $('#frmarticles-f_category_id').append('<option value="'+i+'">'+val+'</option>').multiselect('rebuild');
});

答案 3 :(得分:1)

这个插件运行正常,但我有一个破坏和过滤器的pb:我的组合数据加载了ajax。因此,当我使用ajax调用刷新数据时,我调用destroy来刷新插件:

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

它适用于第一次调用:空组合,ajax调用加载数据,调用上面的函数。 但是,如果我刷新组合数据并再次调用上述函数,过滤器会消失吗? 有人经历过这个pb并找到了解决方案吗?

答案 4 :(得分:1)

谢谢你的帮助。我正在使用多选UI小部件,这是有用的

jQuery("select[title='" + FieldNameTitleText + "']").append( "<option value='" + OptionValue+ "'>" + OptionText + "</option>" ).multiselect("refresh");

答案 5 :(得分:1)

就我而言,我只是想用new替换所有以前的multiselect内容。

这对我有用:

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

答案 6 :(得分:1)

这是我做的:它可能不仅仅是必要的,但它对我有用。

需要修改的原始“选择”代码:

<select id="MySelect" name="selection">
<option value="1">One</option>
<option value="2">Two</option>
</select>

我在PHP中重建选项列表,通过JSON将其发送到JavaScript,并在变量中构造/存储新列表。 E.g:

// this is similar to if we got it from PHP
var newList = '<option value="A">Alpha</option>
<option value="B">Beta</option>
<option value="C">Gamma</option>';

现在,要在jQuery UI Multiselect小部件中切换它:

$('#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

特别是,我用参数重新初始化它,例如:

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

如果有人读过这篇文章并且仍然遇到麻烦,请试一试。

答案 7 :(得分:0)

我用这种方式使用它:

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

有效。

答案 8 :(得分:0)

wenzhixin MultiSelect

var i = jQuery('input');
i.data('multipleSelect').$parent.remove();
i.removeData('multipleSelect');
i.show();

答案 9 :(得分:0)

    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')");
    }   

答案 10 :(得分:0)

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是选择选项的值 2.for循环根据valArr设置所选匹配选项
3.我们的变化只在隐藏的选择元素中 4.改变我们需要重新加载的多选生成元素 5.每个插件可能有不同的名称重新加载,例如:更新,刷新

答案 11 :(得分:0)

我也遇到了同样的问题,但最终,我解决了。请使用$(selecter).multiselect("refresh");而不是$(selecter).multiselect("reload");