Kendo ui 剑道ui多选使用值删除选定元素

Kendo ui 剑道ui多选使用值删除选定元素,kendo-ui,multi-select,Kendo Ui,Multi Select,我正在使用剑道ui多重选择 我有这个密码 var data = [ { text: "Africa", value: "1" }, { text: "Europe", value: "2" }, { text: "Asia", value: "3" }, { text: "North America", value: "4" }, { text: "South

我正在使用剑道ui多重选择

我有这个密码

var data =
        [
            { text: "Africa", value: "1" },
            { text: "Europe", value: "2" },
            { text: "Asia", value: "3" },
            { text: "North America", value: "4" },
            { text: "South America", value: "5" },
            { text: "Antarctica", value: "6" },
            { text: "Australia", value: "7" }
        ];

var multi = $("#select").kendoMultiSelect({
    dataTextField: "text",
    dataValueField: "value",
    dataSource: data
}).data("kendoMultiSelect");
现在,我可以使用以下方法添加值

multi.value(["5", "3"]);
现在我想从选定的值中删除

使用
value
text

例如,如果我想删除
5
,那么是否有类似
multi.remove([“5”])的方法


或者以任何其他方式删除它???

要以编程方式从MultiSelect中删除元素,可以使用:

// Elements to be removed
var subtract = ["1", "5"];
// Get copy of current selected elements
var values = multi.value().slice();
// Remove elements from subtract
values = $.grep(values, function(a) {
    return $.inArray(a, subtract) == -1;
});
// Clean filtering
multi.dataSource.filter({});
// Set new values
multi.value(values);
// Elements to add
var add = ["4", "5"];
// Get copy of current selected elements
var values = multi.value().slice();
// Merge withe elements to add
var merge = $.merge(values, add);
// Clean filtering
multi.dataSource.filter({});
// Remove duplicates and set them back
multi.value($.unique(merge));
其中
subtract
是要删除的元素(在本例中为“1”和“5”)

提示:要添加,您可以使用:

// Elements to be removed
var subtract = ["1", "5"];
// Get copy of current selected elements
var values = multi.value().slice();
// Remove elements from subtract
values = $.grep(values, function(a) {
    return $.inArray(a, subtract) == -1;
});
// Clean filtering
multi.dataSource.filter({});
// Set new values
multi.value(values);
// Elements to add
var add = ["4", "5"];
// Get copy of current selected elements
var values = multi.value().slice();
// Merge withe elements to add
var merge = $.merge(values, add);
// Clean filtering
multi.dataSource.filter({});
// Remove duplicates and set them back
multi.value($.unique(merge));

在这里运行示例:

这已经得到了回答,但这可能会帮助某些人。我也有同样的问题,想要删除值,但没有要删除的值。帮了我的忙。它将从下拉列表中删除所有选定的值

将css类添加到页面

.hide-selected > li.k-state-selected {
    display: none;
}
并将此代码添加到
pageload

var multiselect= $("#select").data("kendoMultiSelect");
multiselect.ul.addClass('hide-selected');

thanx用于重播,但只有当我使用
值:[“1”、“2”、“3”]
时,它才起作用。如果您不使用值,则手动选择亚洲、欧洲(选择使用类型并输入),然后单击以设置值它将不起作用。这是一个正在运行的示例,实际上问题在于键入。它与数字或初始值无关。只要用鼠标选择值,它就可以正常工作。即使您显示我设置的值,您也会看到它们是正确的,因此不确定这是否是MultiSelect上的错误(他们在版本710中已经修复了一个,但这似乎没有修复)。无论如何,我会再看一看。检查一下你在这里的工作:我也会更新我的答案以反映变化。在设置新值之前,我需要执行一个
dataSource.filter({})
。它可以解决这个问题。在我的例子中,我有超过40000个
dataSource.filter({})
选项,所以当我使用
dataSource.filter({})时,系统会变得
Super-Slow
有其他方法吗…??这只是css,它不会“删除”除css类以外的任何东西。