2

首先,您必须知道我正在使用 Struts 开发我的项目(J2EE 这是我的问题:

我的页面中有 2 个 dijit.form.Select 小部件,这些 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;
           }
       }
   }

谢谢你的帮助

问候

4

1 回答 1

2

我认为您必须在更新其选项的属性后重置() Select 。就像是:

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。)

于 2012-06-08T10:21:49.147 回答