2

まず、私が Struts (J2EE) を使用してプロジェクトを開発していることを知っておく必要があります。ここに私の問題があります:

私のページには 2 つの dijit.form.Select ウィジェットがあり、それらの Select には同じリスト (Java クラスによって返される) が入力されています。

最初の「選択ウィジェット」でオプションを選択すると、2 番目の選択ウィジェットを更新し、1 番目のウィジェットから選択したオプションを無効にしたいと思います (ユーザーが同じ項目を 2 回選択するのを防ぐため)。

私はこれを行うことに成功しました (後でコードを示します) が、私の問題は、2 番目のリストを開くと、一度でも更新されないことです。そのため、最初の選択で長時間プレイし、他の多くのオプションを選択できます.2番目のリストで無効になっているオプションは、最初に選択したオプションだけです.

これが私の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 を 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 があると仮定しています。)

于 2012-06-08T10:21:49.147 に答える