将焦点设置为验证错误时的输入文本
Set focus to inputText on validation error
当特定inputText上存在验证错误时,我想在JSF中的inputText字段上设置焦点。我该如何实现?
我以为输入文本上的验证器消息会开箱即用,但似乎不是。
没有这样的默认行为。您需要自己实现它或使用第三方库来完成作业。基本上,在渲染响应期间,您需要遍历所有UIInput
组件的提交表单,并找到其isValid()
返回false
的第一个组件,然后将其客户端 ID 存储在请求映射中,以便您可以将其打印为 JS 变量。
form.visitTree(VisitContext.createVisitContext(), new VisitCallback() {
@Override
public VisitResult visit(VisitContext context, UIComponent component) {
if (component instanceof UIInput && !((UIInput) component).isValid()) {
context.getFacesContext().getExternalContext().getRequestMap()
.put("focus", component.getClientId(context.getFacesContext()));
return VisitResult.COMPLETE;
}
return VisitResult.ACCEPT;
}
});
然后,可以使用以下脚本设置焦点:
<h:outputScript target="body">
var focus = '#{focus}';
if (focus) {
document.getElementById(focus).focus();
}
</h:outputScript>
JSF 实用程序库 OmniFaces 有一个可重用的组件,即<o:highlight>
(源代码在这里,展示演示在这里)。此外,它还在无效的输入上设置了一个样式类,以便您可以通过CSS指定不同的背景颜色。
相关文章:
- 尝试在PHP中回显输入文本时出现未定义的索引错误
- 使用模拟按键在输入框中自动输入文本
- 如何添加类,同时开始在文本字段中输入文本
- JQuery使用相同的功能自动完成各种输入文本
- 如何设置输入文本框jquery的值
- 输入文本框为空时的阻止按钮asp.网络表单
- 基于单选框更新页眉,选中并选择输入文本
- 将输入文本与某个选项的值相匹配并自动选择
- 如何在 JavaScript 中创建输入文本框
- 如何使用纯Javascript观看输入文本框
- 需要使用javascript获取输入文本,然后将其添加到句子中
- php&js-将电子邮件添加到输入文本中
- 动态启用/禁用来自控制器的输入文本
- .val()不返回输入文本
- 从确认框中预填充输入文本框
- 如何使用JavaScript解析输入文本中给定的数据
- 添加/删除/更改输入文本的部分值
- 根据输入文本按元素排序,AngularJS
- 如何将(a*b)两个输入文本值相乘,并在javascript中随文本变化动态显示
- 如何从Tr重复的输入文本中获取值