나는 탭 패널을 사용하는 struts2 프로젝트를 가지고있다. 탭은 div 내의 jsp 페이지입니다. 처음 탭을 선택하면 페이지 끝에있는 자바 스크립트가 원하는 입력 필드에 포커스를 설정합니다. 탭이 입력 필드에 포커스가없는 상태로 돌아 오더라도 제출을 누르십시오. 나는 무엇이 일어나고 있는지를 광범위하게 디버깅했으며, 페이지의 끝 부분에있는 자바 스크립트가 실행 중임을 알았지 만, 단지 필드에만 집중할 수는 없다. getElementById를 통해 필드를 볼 수 있으며 심지어 값을 가져옵니다 (경고로 테스트했습니다)하지만 필드에는 아무 것도 할 수 없습니다. 자바 스크립트를 통해 텍스트를 삽입 할 수 없습니다. 다른 탭을 클릭 한 다음 스크립트를 다시 클릭하면 포커스가 복원됩니다.제출 후 stuts2 div의 양식 태그에 초점을 맞출 수 없음
제출하고 탭의 텍스트 필드는 다음과 같습니다 :
.
.
.
</s:form>
</table>
<script type="text/javascript">
var field = document.getElementById("textField");
field.focus();
</script>
</body>
</html>
상위 페이지의 관련 부분
은 다음과 같이<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의 끝에있는 자바 스크립트입니다 :
<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>
저는 doj와 함께 struts 2.0.9를 사용하고 있습니다.
제출 후 입력 필드에 포커스를 설정하는 방법을 알아야합니다. 도움을 주시면 대단히 감사하겠습니다. 미안하지만 조금 길다면 분명히하고 싶었습니다.
감사
빌
감사를 사용합니다. – billby
어떤 오류가 있습니까? 귀하의 페이지에 dojo.js가 포함되어 있습니까? – Dandy
아무데도 표시되는 오류가 없습니다. 조용히 실패합니다. 디버깅 할 방법을 찾아야한다고 생각합니다. 페이지에는 특별히 dojo.js가 없습니다. 스트럿츠 패키지의 일부로 포함되어 있다고 생각합니다. dojo .byId는 잘 작동합니다. – billby