0

我有一个使用选项卡式面板的 struts2 项目。选项卡是 div 中的 jsp 页面。当您第一次选择选项卡时,页面末尾的 javascript 会将焦点设置在所需的输入字段上。一旦您点击提交,尽管选项卡返回时输入字段中没有焦点。我已经对其进行了广泛的调试以查看发生了什么,并且我注意到页面末尾的 javascript 正在运行,但它无法专注于该领域。它可以通过 getElementById 查看该字段,甚至可以获取它的值(我已经使用警报对此进行了测试),但它无法对该字段执行任何操作。它不能通过javascript将文本放入其中。如果我单击另一个选项卡,然后单击返回脚本,焦点将恢复。

选项卡中的提交和文本字段如下:

<s:form id="myForm" action="myTabAction.do" method="post" validate="true" >
.
.
.
  <s:submit name="submitz" value="Save" id="billbo"
   formId="myForm" executeScripts="true"
   href="myTabAction.do?submit=Save"
   targets="myTab" showLoadingText="false"
   theme="ajax"  cssClass="buttonSmallClass"
   indicator="loadingImage_case" /> 
 .  
 .  
 .  
 <s:textfield name="testVal" maxlength="80" id="textField" cssClass="textClass"  />

标签jsp末尾的javascript如下:

.
.
.
</s:form>
</table>
<script type="text/javascript">
    var field = document.getElementById("textField");
    field.focus();
</script>   
</body>
</html>

父页面的相关部分是:

<s:tabbedPanel selectedTab="%{selectedTabId2}"
 id="CasePartyTabbedPanel" theme="ajax" requiredposition="left"
 cssClass="subTabedpanelClass" cssStyle="width: 710px; height: 200px;" doLayout="false"
 templateCssPath="includes/TabContainer.css">
 .
 .
 .
 <s:div label="My Label" id="myTab" 
   href="MyAction.do?param1=%{paramVal1}&param2=%{paramVal2}"
   theme="ajax" cssStyle="display:none" refreshOnShow="true"
   executeScripts="true" >
   <p>Loading...
  </s:div>
</s:tabbedPanel></td>

我正在使用带有 dojo 的 struts 2.0.9。

我真的需要了解如何在提交后将焦点设置到输入字段。任何帮助将不胜感激。抱歉,如果有点啰嗦,但我想清楚一点。

谢谢

账单

4

2 回答 2

0

只需使用属性focusElement

<s:form focusElement="textField" />
于 2012-05-03T11:45:54.103 回答
0

您可以如下所示更改页面底部的javascript并尝试吗?-

<script type="text/javascript">
dojo.ready(function(){
    var field = document.getElementById("textField"); 
    field.focus(); 
});
</script>

当页面加载时,页面底部的 <script> 标签可能会在 dojo 完成初始化之前被执行。这可能会阻止该领域获得关注。因此,您可以在 dojo.ready() 中添加代码以设置焦点,该代码在 dojo 初始化后执行。

于 2012-05-03T09:42:03.657 回答