我有这种理论情况:
ID: frm
] h:inputText
)[ID: inp1, inp2, inp3
] ID: btn1, btn2, btn3
] 当我使用btn1
提交表单时,我需要关注inp1
(类比btn2
至inp2
,btn3
至inp3
)
我可以使用像javaScript
这样的onclick="document.getElementById('frm:inp1').focus();"
函数(它有效)
问题是,提交按钮会导致重新创建视图,之后忘记了javaScript设置并且未选择组件..
那么,即使在重绘视图后,如何选择仍然选中的组件?
答案 0 :(得分:3)
您可以在页面中包含一个脚本,该脚本将在呈现页面后更新焦点。在动作侦听器中更新有关服务器上的焦点输入的信息。使用jquery:
,脚本看起来像这样<script>
$(document).ready(function() { document.getElementById('frm:#{focusInfo.componentId}').focus(); })
</script>
假设您在按钮单击时在服务器上执行的action / actionListener中的focusInfo bean中设置了componentId属性。 FocusInfo包含带有getter和setter的componentId以及可能的方法切换componentId并使用您的按钮注册为actionListeners。
答案 1 :(得分:-1)
使用PrimeFaces组件:
<!-- Focus on first field, or first field with error -->
<p:focus context="feesboek"/>
将它与焦点组件结合使用,你会摇滚!
<!-- Default button when pressing enter -->
<p:defaultCommand target="submit"/>