2010-06-29 22 views

Respuesta

23

Si ya está en HTML5 y JSF 2.2, use el atributo HTML5 autofocus. En JSF 2.2 puede configurarlo como passthrough attribute.

<html ... xmlns:a="http://xmlns.jcp.org/jsf/passthrough"> 
... 
<h:inputText ... a:autofocus="true" /> 

Incluso puede configurarlo de forma condicional, sólo es necesario para asegurarse de que la condición se evalúa como falsenull, de lo contrario todavía aparecerá el atributo. Es un atributo booleano HTML, por lo que solo su presencia ya es el activador, independientemente de su valor. Cuando el valor se establece explícitamente en null, entonces JSF no representará el atributo en su totalidad.

<h:inputText ... a:autofocus="#{component.valid ? null : true}" /> 

Una alternativa sería introducir algo de JavaScript. Cada elemento de entrada tiene una función focus(). El siguiente enfoque ingenuo de Vanilla JS enfoca el primer elemento de la primera forma.

window.onload = function() { 
    document.forms[0].elements[0].focus(); 
} 

Si desea enfocar un elemento de entrada específico durante la carga de la ventana, y luego hacer:

window.onload = function() { 
    document.getElementById('formId:inputId').focus(); 
} 

Si le sucede que tiene jQuery en las manos, los cheques de grano más fino se podría hacer.

$(document).ready(function() { 
    $(":input:visible:enabled:first").focus() 
}); 

En caso de que la intención de ejecutarlo sólo después de una devolución de datos, con la cabeza por debajo de Q relacionada & A:

bibliotecas/componente de servicios públicos pueden tener instalaciones de autoenfoque integradas. OmniFaces tiene un <o:highlight> que resalta todas las entradas inválidas en la devolución de datos y autofocuses la primera. PrimeFaces de forma predeterminada autofoca el elemento "último activo" al completar una solicitud de AJAX y tiene un <p:focus> para un control de grano más fino. Véase también a continuación relativa Q & A:

15

Si utiliza PrimeFaces, usted puede enfocar su entrada como esta:

<p:focus for="inputId"/> 
+0

https://www.primefaces.org/ showcase/ui/misc/focus.xhtml – Andrew

+0

Tenga en cuenta que usar esto en un panelGrid interferirá con el posicionamiento ... Colóquelo afuera ... Pero luego parece que tiene que estar dentro de la misma forma o algo así, así que esté atento a eso también... – Andrew

Cuestiones relacionadas