0

rich:selectドロップダウン入力に使用しています。

<rich:select id="select" value="#{controller.attrs.value}" >
       <f:selectItems value="#{controller.attrs.items}" var="foo"
            itemValue="#{foo}" itemLabel="#{foo.bar}" />
       <f:ajax event="#{ajaxActionController.action}" render="input" />            
</rich:select>

私たちの問題は、ドロップダウンがトリガーされると、常にリストの最初の要素から始まることです。ただし、現在選択されているアイテムの位置にジャンプしたいと考えています。

4

2 に答える 2

1

従来の手段では不可能ですが、これはうまくいくはずです:

<rich:select id="select" onlistshow="L.scrollList()" onlistclick="L.saveId()">

…</p>

L = window.L || {};

(function() {        
    id = 0;    

    L.saveId = function() {
        id = #{ rich:component('select') }.list.index;
    };

    L.scrollList = function() {
        var list = #{ rich:component('select') }.list,
            listDiv = $( #{ rich:component('select') }.popupList.popup ).find(".rf-sel-lst-scrl"),
            selectedDivPos = $(list.items[id]).position();  

            listDiv.scrollTop(selectedDivPos.top - 7);
    };  

})(L); 
于 2013-07-18T12:30:32.960 に答える
0
<h:inputHidden id="selectedId" value="#{controller.attrs.value}"/>
<rich:select id="select" value="#{controller.attrs.value}" >
   <f:selectItems value="#{controller.attrs.items}" var="foo"
        itemValue="#{foo}" itemLabel="#{foo.bar}" />
   <f:ajax event="#{ajaxActionController.action}" render="selectedId input" />            

を作成し<h:inputHidden/>、その id (selectedIdこの例では ) を"render="ajax に追加する<h:inputHidden/>と、新しい選択の場合に値が更新されます。

これで、javascriptで<h:inputHidden/>(の選択された値)の値を取得できます。</rich:select>

var selectedValue = document.getElementById('selectedId').value;
于 2016-01-07T11:51:20.577 に答える