2012-05-03 3 views
0

나는 탭 패널을 사용하는 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}&param2=%{paramVal2}" 
    theme="ajax" cssStyle="display:none" refreshOnShow="true" 
    executeScripts="true" > 
    <p>Loading... 
    </s:div> 
</s:tabbedPanel></td> 

저는 doj와 함께 struts 2.0.9를 사용하고 있습니다.

제출 후 입력 필드에 포커스를 설정하는 방법을 알아야합니다. 도움을 주시면 대단히 감사하겠습니다. 미안하지만 조금 길다면 분명히하고 싶었습니다.

감사

답변

0

다음과 같이 시도 당신이 페이지 하단의 자바 스크립트를 변경할 수 있습니까? - 도장이 초기화를 완료하기 전에

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

페이지가로드

는 < 스크립트> 페이지 하단의 태그가 실행 얻을 수 있습니다. 현장에 집중하지 못하게 할 수 있습니다. 따라서 dojo.ready()에서 포커스를 설정하는 코드를 추가 할 수 있습니다. dojo.ready()는 dojo가 초기화 된 후에 실행됩니다.

+0

감사를 사용합니다. – billby

+0

어떤 오류가 있습니까? 귀하의 페이지에 dojo.js가 포함되어 있습니까? – Dandy

+0

아무데도 표시되는 오류가 없습니다. 조용히 실패합니다. 디버깅 할 방법을 찾아야한다고 생각합니다. 페이지에는 특별히 dojo.js가 없습니다. 스트럿츠 패키지의 일부로 포함되어 있다고 생각합니다. dojo .byId는 잘 작동합니다. – billby

0

단순히 나는 그것을 시도했지만 코드는 실행되지 않을 것이다, 속성을 focusElement

<s:form focusElement="textField" /> 
+0

감사하지만 속성은 v 2.0.9에 포함되어 있지 않습니다. 그랬 으면 좋겠어. 나는 어느 쪽이든을 격상시키는 선택권이 없다. – billby

관련 문제