2017-08-08 13 views
0

私はbootstrap multiselectを使用して、テキストボックスからの検索に基づいていくつかのユーザーを更新/表示します。オプションを選択解除すると、その値が複数選択と再構築から削除されます。私は、以下に示すように、この複数選択を表示するには、改札のフレームワークを使用しています -jQueryの長さを使用して既存の要素を見つけることができません

private PaletteListChoice<T> addSelectedEntities(...) { 
    final PaletteListChoice<T> result = new PaletteListChoice<T>(id, model, choicesModel, renderer, this) { 
     private static final long serialVersionUID = 1L; 

     @Override 
     public void renderHead(IHeaderResponse response) 
     { 
      String jsSelectedField = "var idSelector = '" + getMarkupId() + "';\n" 
        + "var idSelectorUL = jQuery('#' + idSelector +'UL');\n" 
        + "if(idSelectorUL.length) {\n" // if idSelectorUL present, don't create bootstrap-multiselect again 
        + "} else {\n" // if idSelectorUL not present, then create bootstrap-multiselect again 
        + "MultiSelect.setMultiSelect(idSelector, false);\n" // custom code to display bootstrap multiselect, similar to $('#id').multiselect(); 
        + "}\n"; 

      response.renderOnDomReadyJavaScript(jsSelectedField); 
     } 
    }; 
    parent.add(result); 
    return result; 
} 

(例えばselectddUL用)idSelectorULが存在しているのに、私の問題は、私が「0」としてidSelectorUL.lengthを取得しています。私はオプションが削除され、上記の問題のためにすぐに複数選択を再構築しています.2つのマルチセレクションを取得しています(長さは0、ウィッセットはマルチセレクションオプションを作成します)

私のコードや、 idに基づいてjQueryを使用しますか?

答えて

1

コンポーネントにsetOutputMarkupId(true);を呼び出していますか?

このコンポーネントは、ロード時にページに存在するのですか、またはそのコンポーネントがajax経由で追加されますか?その場合は、javascriptをrenderHeadから、コンポーネント自体に関連付けられたビヘイビアに移動する必要があります。

+0

私は 'setOutputMarkupId(true)'を呼んでいません。 新しいレポートを追加するとき、コンポーネントは編集/コピー中にajax経由で追加されます。コンポーネントはページの読み込み時に存在します。はい、私はrenderHeadからJSコードをAjaxFormComponentUpdatingBehaviorに移動することを考えていました。後で更新されます。 – ChilBud

関連する問題