【问题标题】:Kendo ui Multi Select Remove Selected element using valueKendo ui Multi Select 使用值删除选定元素
【发布时间】:2013-07-13 07:13:14
【问题描述】:

我正在使用剑道 UI 多选

http://demos.kendoui.com/web/multiselect/events.html

我有这个代码

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"]); 这样的方法

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

【问题讨论】:

    标签: kendo-ui multi-select


    【解决方案1】:

    要以编程方式从 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);
    

    其中subtract 是要删除的元素(在本例中为“1”和“5”)。

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

    // 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));
    

    在这里运行示例:http://jsfiddle.net/OnaBai/9WfGA/

    【讨论】:

    • 感谢重播,但它仅在我使用 value:["1", "2", "3"] 时才有效 prefect。如果您不使用值,则手动选择asia,Europe(使用类型选择并输入)然后单击设置值将不起作用
    • 其实问题在于打字。它与数字无关,也与初始值无关。只要您使用鼠标选择值,它就可以正常工作。即使您显示我正在设置的值,您也会看到它们是正确的,因此不确定这是否是 MultiSelect 上的错误(他们已经在 710 版中修复了一个错误,但这似乎没有得到修复)。无论如何,我会再看看它。
    • 检查你的小提琴在这里工作:jsfiddle.net/OnaBai/9WfGA/4 我也更新了我的答案以反映变化。在设置新值之前我需要做一个dataSource.filter({})。
    • 谢谢它解决了这个问题。在我的情况下,我有多个40000 选项,所以当我使用dataSource.filter({}) 时系统变为Super Slow 有没有其他方法..???
    【解决方案2】:

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

    给页面添加一个css类

    .hide-selected > li.k-state-selected {
        display: none;
    }
    

    并将此代码添加到pageload

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

    【讨论】:

    • 这只是 css,除了 css 类,它不会“删除”任何东西。
    猜你喜欢
    • 2017-05-30
    • 2013-05-04
    • 1970-01-01
    • 2014-12-17
    • 2013-02-11
    • 1970-01-01
    • 1970-01-01
    • 2019-11-28
    • 2013-04-13
    相关资源
    最近更新 更多