いくつかの入力コンポーネントを含むモーダル ダイアログがあります。
この問題は、ダイアログ内で ap:layout を使用すると発生します。ap:layoutUnit 内の p:inputText コンポーネントは、最初はフォーカスを得ることができますが、入力テキストが表示されず、タブ キーワードを使用して他の入力フィールドに切り替えることができないため、キーボードに応答しなくなります (Iマウスのみで別の入力コンポーネントに切り替えることができます)。
modal="false" を設定すると問題は解決しますが、モーダル ダイアログが必要です。
これが私のコードです:
<h:form id="outerForm">
<p:commandButton id="button" value="Show dialog" onclick="dialogVar.show()" type="button" />
<p:dialog id="dialog" header="inputText inside p:layout will not work" widgetVar="dialogVar" modal="true" resizable="false" closeOnEscape="true">
<h:inputText />
<p:autoComplete />
<p:panelGrid columns="2">
<h:outputLabel value="Write something" />
<p:inputText />
<h:outputLabel value="Write something else" />
<p:inputText />
<h:outputLabel value="Text Area" />
<p:inputTextarea rows="4" cols="30" autoResize="false" />
</p:panelGrid>
<p:layout id="diffDialogLayout" style="height:400px;width:900px;">
<p:layoutUnit id="diffWestUnit" position="west" size="45%">
<p:panelGrid columns="2">
<h:outputLabel value="Write something" />
<p:inputText />
<h:outputLabel value="Write something else" />
<p:inputText />
<h:outputLabel value="Text Area" />
<p:inputTextarea rows="4" cols="30" autoResize="false" />
</p:panelGrid>
</p:layoutUnit>
<p:layoutUnit id="diffCenterUnit" position="center">
<br />
</p:layoutUnit>
</p:layout>
<h:inputText />
</p:dialog>
</h:form>
私の環境:
- プライムフェイス 3.4.2
- PrimeFaces 拡張機能 0.6.1
- モハラ 2.1.13
- トムキャット 7.0.30
- エクリプス インディゴ SR1
編集
提案されたソリューションは正常に機能します。この問題は、次の CSS コードで解決できます。
.ui-dialog { z-index: 1005 !important; }
.ui-layout-pane-west { z-index: 1010 !important; }
.ui-layout-pane-center { z-index: 1010 !important; }
または、特定のダイアログのみが必要な場合は、次のようにします。
#outerForm\3A diffDialog.ui-dialog { z-index: 1005 !important; }
#outerForm\3A diffWestUnit.ui-layout-pane-west { z-index: 1010 !important; }
#outerForm\3A diffCenterUnit.ui-layout-pane-center { z-index: 1010 !important; }
\3A文字は、IE 6-8 との互換性のために使用されます。これについては、CSS セレクターの要素 ID のコロンの処理 で説明されています。