0

datatable を含むポップアップ ダイアログがあり、inputText フィールドのフィルターにフォーカスを当てたくない。このテーブルの下にあるボタンにフォーカスしたいと思います。私はこれを試しました:

<p:focus id="focus" for="buttonFocus" context="dialog"/>
<p:dialog id="dialog" header="Выбор организации" widgetVar="vDialog" modal="true" resizable="false">  
    <p:dataTable 
    dblClickSelect="true"
    id="table"               
                 var="record"
                 value="#{myBean.tableList}"
                 rowKey="#{record.waId}"
                 filteredValue="#{myBean.filteredList}" 
                 lazy="true"                                                             
                 >                                                                      
                <p:column headerText="Name" filterBy="#{recordp.name}" sortBy="#{recordp.name}">                                    
                         #{record.name}
                </p:column>                                                                                                 
     </p:dataTable>  
        <p:commandButton id="buttonFocus" actionListener="#{myBean.fill}"/>     
</p:dialog>

それは役に立ちません。では、そのような状況でボタンにフォーカスを設定するにはどうすればよいでしょうか?

4

1 に答える 1

1

いくつかの提案が見つかりました。

だから私のために働いた最初のものは次のとおりです:

       <script type="text/javascript">

       PrimeFaces.widget.Dialog.prototype.applyFocus = function() {
          var firstInput = this.jq.find('#buttonFocus');
              firstInput.focus();
       }
       </script>

このメソッドには p:focus は必要ありません。また、フォームに prependId="false" を追加することを忘れないでください。そうしないと、id が変更されます。

入力要素のみで機能する(ボタンではなく)2番目:

       <script type="text/javascript">

       PrimeFaces.widget.Dialog.prototype.applyFocus = function() {

       }
       </script>

ここでは p:focus 要素が必要ですが、先ほど言ったように、これは入力のみで機能します。

そして、このブログで見ることができる3番目のソリューションは、正しいバージョンのprimefaces(テストされていない)を持っている場合です

于 2013-09-03T11:15:42.917 に答える