Я хочу установить внимание на inputText поле в JSF на загрузке страницы. Как я могу реализовать это?
Если вы уже используете HTML5 и JSF 2.2, используйте атрибут автофокуса HTML5 . В JSF 2.2 вы можете установить его как сквозной атрибут .
<html ... xmlns:a="http://xmlns.jcp.org/jsf/passthrough">
...
<h:inputText ... a:autofocus="true" />
Вы даже можете установить его условно, вам нужно только убедиться, что условие false
оценивается как null
, иначе атрибут все равно будет отображаться. Это логический атрибут HTML, поэтому только его присутствие уже является триггером, независимо от его значения. Когда значение явно установлено на null
, тогда JSF не будет отображать атрибут полностью.
<h:inputText ... a:autofocus="#{component.valid ? null : true}" />
Альтернативой было бы использование JavaScript. Каждый входной элемент имеет функцию focus () . Приведенный ниже наивный подход Vanilla JS фокусируется на первом элементе первой формы.
window.onload = function() {
document.forms[0].elements[0].focus();
}
Если вы хотите сфокусировать определенный элемент ввода во время загрузки окна, сделайте следующее:
window.onload = function() {
document.getElementById('formId:inputId').focus();
}
Если у вас под рукой есть jQuery, можно сделать более детальные проверки.
$(document).ready(function() {
$(":input:visible:enabled:first").focus()
});
Если вы намереваетесь выполнить его только после обратной передачи, перейдите к связанным вопросам и ответам ниже:
Утилиты / библиотеки компонентов могут иметь встроенные средства автофокусировки. OmniFaces имеет
, который выделяет все недопустимые входные данные при обратной передаче и автоматически фокусирует первый. PrimeFaces по умолчанию автоматически фокусирует «последний активный» элемент при завершении запроса ajax и имеет
для более детального управления. См. Также соответствующие вопросы и ответы ниже: