我有一个使用标签面板的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}¶m2=%{paramVal2}"
theme="ajax" cssStyle="display:none" refreshOnShow="true"
executeScripts="true" >
<p>Loading...
</s:div>
</s:tabbedPanel></td>
我正在使用带有dojo的struts 2.0.9。
我真的需要了解如何在提交后将焦点设置到输入字段。 任何帮助将不胜感激。对不起,如果它有点长,但我想说清楚。
由于
比尔
答案 0 :(得分:0)
您可以更改页面底部的javascript,如下所示,然后尝试? -
<script type="text/javascript">
dojo.ready(function(){
var field = document.getElementById("textField");
field.focus();
});
</script>
当页面加载时,&lt;脚本&gt;在dojo完成初始化之前,页面底部的标记可能会被执行。这可能会阻止该领域获得关注。因此,您可以添加代码以在dojo.ready()中设置焦点,该函数在dojo初始化后执行。
答案 1 :(得分:0)
只需使用属性focusElement
<s:form focusElement="textField" />