Фокус набора к определенному JSF inputText на загрузке страницы

Я хочу установить внимание на inputText поле в JSF на загрузке страницы. Как я могу реализовать это?

18
задан BalusC 23 December 2015 в 08:26
поделиться

1 ответ

Если вы уже используете 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 и имеет для более детального управления. См. Также соответствующие вопросы и ответы ниже:

28
ответ дан 30 November 2019 в 06:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: