首先,您必须知道我正在使用Struts(J2EE开发项目) 这是我的问题:
我的页面中有2个dijit.form.Select小部件,而这些小部件填充了相同的列表(由Java类返回)。
当我在第一个“选择小部件”中选择一个选项时,我想更新我的第二个选择小部件,并从我的第一个小部件中禁用所选选项(以防止用户选择相同的项目两次)。
我成功了(我稍后会告诉你我的代码),但我的问题是,当我打开第二个列表时,即使只有一次,它也永远不会再次刷新。所以我可以用我的第一选择玩很长时间,并选择许多其他选项,在我的第二个列表中禁用的唯一选项是我选择的第一个。
这是我的JS代码:
function removeSelectedOption(){
var list1 = dijit.byId("codeModif1");
var list2 = dijit.byId("codeModif2");
var list1SelectedOptionValue = list1.get("value");
if(list1SelectedOptionValue!= null){
list2.reset();
for(var i = 0; i < myListSize; i++){
// If the value of the current option = my selected option from list1
if(liste2.getOptions(i).value == list1SelectedOptionValue){
list2.getOptions(i).disabled = true;
} else {
list2.getOptions(i).disabled = false;
}
}
}
感谢您的帮助
此致
答案 0 :(得分:2)
我认为你必须在更新其选项的属性后重置()选择。类似的东西:
function removeSelectedOption(value)
{
var list2 = dijit.byId("codeModif2"),
prev = list2.get('value');
for(var i = 0; i < myListSize; i++)
{
var opt = myList[i];
opt.disabled = opt.value === value;
list2.updateOption(opt);
}
list2.reset();
// Set selection again, unless it was the newly disabled one.
if(prev !== value) list2.set('value', prev);
};
(我假设你有一个包含可能选项的myList,以及随附的myListSize。)