从dojo.form.Multiselect中选择并删除项目

时间:2012-06-08 14:48:34

标签: javascript dojo

我在向导对话框中有两组dojo.form.Multiselect框。他们可以在他们之间传输项目,例如:Testing Multiselect from Widget。我在表单上也有一个复选框,当用户点击它时,我需要:

  1. 选择第一个多选框中的所有项目
  2. 通过addSelected()
  3. 将它们移动到右侧选择框
  4. 清除所有项目的第一个列表
  5. invsertSelection选项不起作用,因为如果在单击该复选框时选择了任何项目,则仅选择并移动未选择的项目。我没有在API中看到这样做的方法,也没有在codesphere中找到可靠的方法。有什么建议吗?

2 个答案:

答案 0 :(得分:4)

通过查看Dojo Docs和其他代码找出解决方案:

var selectItem1 = dijit.byId('firstSelectBox');

// Deselect all and invert to Select all
selectItem1.set("value",[]);
selectItem1.invertSelection();

//Move items to right box
var selectItem2 = dijit.byId('secondSelectBox');
selectItem2.addSelected(selectItem1);

答案 1 :(得分:0)

基本上,addSelected对select执行dom查询,以查看哪些选项被标记为已选择:

query("option",this.containerNode).filter(function(n){
return n.selected; // Boolean
});

所以你基本上可以选择一切:

query("option", myMultiSelect.containerNode).forEach(function(n){
    n.selected = true; // Boolean
});

然后使用addSelected ... somethign就是这样做的。