2017-07-20 30 views
2

私のアプリケーションでPrimeFaces 5.1を使用しています。selectOneMenudataTableの中に入れました。フォーカスを合わせるためにボタンを追加するときはselectOneMenuボタンを押してください。Primefaces selectOneMenuフォーカスが動作しない

サンプルコード

はJavaScript

function focusMenu(id) 
{ 
var focusId="#{p:component('mainTable')}"+":"+id; 
PrimeFaces.focus(final); 
} 

XHTML

<div style="padding-left:4px;height: 
expression(this.scrollHeight > 399? '400px' : 'auto');max-height:400px;overflow-x:auto;overflow-y:auto;"> 
<p:dataTable id="mainTable" value=#{main.UserDataTable} .....> 
<p:column headerText="Drop Down"> 
<p:selectOneMenu id="dropdDownId"...> 
..... 
</p:selectOneMenu> 
</p:column> 
<p:column headerText="Operation"> 
<p:commandButton value="Add More Row" action="{user.addMoreRowAction}" 
update="mainTable"/> 
</p:column> 
</p:dataTable> 
</div> 

のJava

public String addMoreRowAction() 
{ 
RequestContext.getCurrentInstance().execute("focusMenu('"+ rowIndex + ":dropdDownId"')"); 
return null; 
} 

ここで上記のコードは最後に集中する作業罰金ですが、私が期待したものとしてselectOneMenuを追加しましたが、ブラウザのスクロールバーは、最近selectOneMenuコンポーネントを追加してピント合わせに基づいて下に移動されていません。

問題を解決するのを手伝ってください。

答えて

0

scrollTop機能を使用して、スクロールバーをフォーカスIDにすることができます。 focusidを関数に渡します。

function setScrollPos(focusId){ 
    $('html,body').animate({ 
      scrollTop: $(focusId).offset().top-65 
    }, 1000); 
} 

function focusMenu(id) 
{ 
var focusId="#{p:component('mainTable')}"+":"+id; 
PrimeFaces.focus(final); 
setScrollPos(focusId); <<------ 
} 
上記の関数を呼び出します
関連する問題