2012-06-08 45 views
2

首先,你要知道,我發展我的項目和Struts(J2EE 這裏是我的問題:刷新dijit.form.Select

我有2只dijit.form.Select小部件在我的網頁,並這些選擇填充相同的列表(由Java類返回)

當我在我的第一個「選擇小部件」中選擇一個選項時,我想更新我的第二個選擇小部件,並禁用從我的選定選項第一個部件(防止用戶選擇同一個項目兩次)

我成功地做到了這一點(稍後我會告訴你我的代碼),但我的問題是th當我打開第二份名單時,即使有一次,它也不會再次刷新。所以我可以用我的第一選擇玩很長時間,並選擇很多其他選項,我的第二個列表中禁用的唯一選項是我選擇的第一個選項。

這是我的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; 
      } 
     } 
    } 

感謝您的幫助

問候

回答

2

我認爲你必須reset()方法選擇你已經更新了其選項的屬性之後。喜歡的東西:

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)

+0

由於@Frode,這還真管用! –