2014-02-25 69 views
3

我有这个奇怪的问题与剑道multiselect。Kendo Multiselect值设置Bug

<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米

+0

我测试过了,看不到任何问题。你能否解释一下你想要发生什么以及发生什么? –

+0

好的。首先检查分别点击“初始列表”和“填充列表”按钮时会发生什么。初始化列表初始化kendomultibox,填充列表填充值为1,2,3的3个标签。 但当你按照问题所示做“键盘”复制不使用鼠标,那么值不显示... 我已经测试它在铬和火狐它,我可以复制它。 – Ruchan

+0

我会这样做,但我不能说每个人都使用空格键而不是输入,不是吗?任何其他解决方法将有所帮助。加上刚刚意识到,不能使用'空格键'来选择:p – Ruchan

回答

4

测试之前,在多选设置新值之前,您应该清洗过滤器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/

+0

感谢这个工程。但仍然看起来像是剑道的一部分。 – Ruchan

+0

与KendoUI如何过滤已选择的选项不再显示它们有关。 – OnaBai

+0

依然没有从剑道我想,今天还是遇到这个问题。我以为我忘了把我的代码放在一些东西或错误的地方。结果我需要清空过滤器。谢谢 –