2010-06-29 11 views

Répondre

23

Si vous êtes déjà sur HTML5 et JSF 2.2, utilisez l'attribut HTML5 autofocus. Dans JSF 2.2, vous pouvez le définir comme passthrough attribute.

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

Vous pouvez même le mettre sous condition, il vous suffit de vous assurer que la condition false évalue à null, sinon l'attribut sera encore rendu. C'est un attribut booléen HTML, donc seule sa présence est déjà le déclencheur quelle que soit sa valeur. Lorsque la valeur est explicitement définie sur null, JSF ne rendra pas l'attribut dans son intégralité.

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

Une alternative serait de jeter du JavaScript. Chaque élément d'entrée a une fonction focus(). L'approche naïve de Vanilla JS concentre le premier élément de la première forme.

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

Si vous voulez vous concentrer un élément d'entrée spécifique lors du chargement de la fenêtre, puis faites:

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

Si vous arrive d'avoir jQuery à mains, des contrôles à grains plus fins pourrait être fait.

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

Si vous avez l'intention d'exécuter seulement après une publication, la tête au-dessous connexes Q & A:

bibliothèques utilitaires/composants peuvent avoir installations autofocus intégrées. OmniFaces a un <o:highlight> qui met en évidence toutes les entrées non valides sur la publication et autofocus le premier. PrimeFaces par défaut autofocus l'élément "dernier actif" sur l'achèvement d'une requête ajax et a un <p:focus> pour plus de contrôle à grain fin. Voir aussi ci-dessous connexes Q & A:

15

Si vous utilisez primefaces, vous pouvez vous concentrer vos commentaires comme celui-ci:

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

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

+0

Notez que l'utilisation de ceci dans un panelGrid va jouer avec le positionnement ... Placez-le dehors ... Mais alors il semble qu'il doit être dans la même forme ou quelque chose, alors faites attention à cela ainsi que... – Andrew

Questions connexes