gpt4 book ai didi

jsf - 在页面加载时将焦点设置为特定的JSF inputText

转载 作者:行者123 更新时间:2023-12-03 13:16:48 25 4
gpt4 key购买 nike

我想在页面加载时将焦点设置在JSF中的inputText字段上。我该如何实现?

最佳答案

如果您已经在使用HTML5和JSF 2.2,请使用HTML5 autofocus属性。在JSF 2.2中,可以将其设置为passthrough attribute

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

您甚至可以有条件地进行设置,只需确保 false条件的计算结果为 null,否则该属性仍将呈现。这是一个HTML bool(boolean) 值属性,因此无论其值如何,只有它的存在已经是触发器。当该值显式设置为 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()
});

如果您打算仅在回发后执行,请前往以下相关问答:
  • Set focus to inputText on validation error
  • Calling a JavaScript function from managed bean

  • 实用程序/组件库可能具有内置的自动对焦功能。 OmniFaces有一个 <o:highlight> ,它突出显示回发时的所有无效输入,并自动使第一个无效。默认情况下, PrimeFaces在完成ajax请求时自动将“last active”元素聚焦,并具有 <p:focus> 以进行更精细的控制。另请参阅以下相关问答:
  • OmniFaces highlight does not set focus with <p:ajax>
  • 关于jsf - 在页面加载时将焦点设置为特定的JSF inputText,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3139857/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com