JSF表单 - 提交>专注于选定的输入

时间:2011-09-24 13:09:21

标签: javascript jquery jsf

我有这种理论情况:

  • 一个视图,其中包含一个表单[ID: frm]
  • 三个组件(例如h:inputText)[ID: inp1, inp2, inp3]
  • 三个提交按钮[ID: btn1, btn2, btn3]

当我使用btn1提交表单时,我需要关注inp1(类比btn2inp2btn3inp3

我可以使用像javaScript这样的onclick="document.getElementById('frm:inp1').focus();"函数(它有效)

问题是,提交按钮会导致重新创建视图,之后忘记了javaScript设置并且未选择组件..

那么,即使在重绘视图后,如何选择仍然选中的组件?

2 个答案:

答案 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"/>