【问题标题】:Kendo Multiselect value setting Bug剑道多选值设置错误
【发布时间】:2014-02-25 10:07:58
【问题描述】:

我在使用剑道多选时遇到了这个奇怪的问题。

<input id="addTags" /><br>
<input type="button" onclick="fillaList();" value="fill List" />
<input type="button" onclick="clearList();" value="Init List" />

var list=[{label:'tag1', value:'1'},
         {label:'tag9', value:'9'},
         {label:'tag8', value:'8'},
         {label:'tag7', value:'7'},
         {label:'tag6', value:'6'},
         {label:'tag5', value:'5'},
         {label:'tag4', value:'4'},
         {label:'tag3', value:'3'},
         {label:'tag2', value:'2'}];

function fillData(tagIds){ 

    var tagObj = $("#addTags").data("kendoMultiSelect");
    if (tagObj == undefined) { // if not loaded
        $("#addTags").kendoMultiSelect({
            dataTextField: "label",
            dataValueField: "value",
            dataSource: list,
            value: tagIds, placeholder: "Select from list",
            change: function() {
                // change
            }
        });
    } else { // if already loaded only change the values.
        tagObj.value(tagIds);
        console.log(tagIds);
        console.log(tagObj.value());
    }
}
function fillaList(){
    var tagIds=[1,2,3];
    fillData(tagIds);
}
function clearList(){
    fillData([]);
}

http://jsfiddle.net/ruchan/AgV52/1/

问题复制

  • 单击“初始化列表”,然后通过键盘将新标签添加到框中。

  • 现在点击填充列表按钮。 所有值都没有被选择。或者有时只选择了 1 个

鼠标选择时不存在这个问题。

我在 Chrome v32.0.1700.107 m 中测试过

【问题讨论】:

  • 我测试了,看不出有什么问题。你能解释一下你到底想要发生什么,而不是发生什么?
  • 好的。首先检查分别单击“初始化列表”和“填充列表”按钮时会发生什么。 Init list 初始化 kendomultibox 并填充列表填充 3 个标签,值为 1,2,3。但是当你按照问题复制中所示的“键盘”不使用鼠标进行操作时,则不会显示这些值......我已经在 chrome 和 firefox 中对其进行了测试,我可以复制它。
  • 我会这样做,但我不能说每个人都使用空格键而不是输入,不是吗?任何其他解决方法都会有所帮助。加上刚刚意识到,不能使用spacebar 来选择:p

标签: jquery kendo-ui kendo-multiselect


【解决方案1】:

在多选中设置新值之前,您应该在tagObj.dataSource.filter({});之前清理过滤器

你的功能应该是:

function fillData(tagIds){ 

    var tagObj = $("#addTags").data("kendoMultiSelect");
    if (tagObj == undefined) { // if not loaded
        $("#addTags").kendoMultiSelect({
            dataTextField: "label",
            dataValueField: "value",
            dataSource: list,
            value: tagIds, placeholder: "Select from list",
            change: function() {
                // change
            }
        });
    } else { // if already loaded only change the values.
        // Clean DataSource filter before setting new values
        tagObj.dataSource.filter({});
        tagObj.value(tagIds);
        console.log(tagIds);
        console.log(tagObj.value());
    }
}

您的 JSFiddle 在此处修改:http://jsfiddle.net/OnaBai/AgV52/2/

【讨论】:

  • 感谢这项工作。但看起来仍然像剑道的一部分。
  • 与 KendoUI 如何过滤已选择的选项以使其不再显示有关。
  • 我认为剑道仍然没有修复,今天仍然遇到这个问题。我以为我忘记在我的代码中添加一些/或一些错误。原来我需要清空过滤器。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-19
  • 1970-01-01
相关资源
最近更新 更多