2016-01-06 51 views
1

在我的項目中有8個文本框和一個命令按鈕。當我按下命令按鈕onfocus屬性不起作用。所以我試圖使用p:focus或者沒有按預期工作。p:commandButton onfocus不起作用

<p:commandButton value="Test1" action="#{test.testAction1}" update="mainPanel"> 
    <p:focus for="textField"/> 
</p:commandButton> 

我需要p:commandButton的屬性onfocus聚焦於特定的組成部分?

回答

2

如何獲得集中所有兩種不同學科的

首先必須在這裏區分:

  1. 由幾個組件提供的onfocus屬性用於在焦點事件作出反應(發生的歷史時,給定的組件接收焦點)。提供的JavaScript被稱爲客戶端。

  2. PrimeFaces元素p:focus用於控制焦點。有一個自動/隱式(a)和顯式模式(b):

    a。​​將焦點設置爲第一個輸入元素。這也是驗證意識的方式,它將焦點放在第一個無效字段上。

    b。 <p:focus for="..." />使具有給定ID的組件接收焦點。

    鏡頭聚焦控制工作:

    • 不要把p:focus的構成要素中,只要把它例如在第一個之前,

    • 用於AJAX請求,update還有p:focus元素。

又來了一個小例子來擺弄:

<h:form> 
    <p:focus for="textField-#{exampleForm.focusedIndex}"/> 
    <p:inputText id="textField-1" /><br /> 
    <p:inputText id="textField-2" /><br /> 
    <p:inputText id="textField-3" /><br /> 
    <p:inputText id="textField-4" /><br /> 
    <p:inputText id="textField-5" onfocus="alert('last field focused.');" /><br /> 
    <p:commandButton value="Up" update="@form" action="#{exampleForm.decrementFocus()}" /> 
    <p:commandButton value="Down" update="@form" action="#{exampleForm.incrementFocus()}" /> 
</h:form> 

相應的bean:

import java.io.Serializable; 

import javax.faces.view.ViewScoped; 
import javax.inject.Named; 

@Named 
@ViewScoped 
public class ExampleForm implements Serializable { 

    private static final int MIN_INDEX = 1; 
    private static final int MAX_INDEX = 5; 

    private int focusedIndex = 1; 

    public int getFocusedIndex() { 
     return focusedIndex; 
    } 

    public void setFocusedIndex(final int focusedIndex) { 
     this.focusedIndex = focusedIndex; 
    } 

    public void incrementFocus() { 
     if (focusedIndex < MAX_INDEX) 
      focusedIndex++; 
    } 

    public void decrementFocus() { 
     if (focusedIndex > MIN_INDEX) 
      focusedIndex--; 
    } 
} 

參見:

+0

當我使用onfocus =「指定Id」時,它會在瀏覽器中顯示未定義的錯誤 – Karthik

+1

是的,因爲'onfocus'屬性需要JavaScript。 –

+0

@Karthik:有沒有進展? –

相關問題