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

ページ下部のjavascriptを以下のように変更して試していただけないでしょうか?-

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

ページが読み込まれると、Dojo が初期化を完了する前に、ページの下部にある < script > タグが実行される場合があります。そのため、フィールドがフォーカスされていない可能性があります。そのため、Dojo の初期化後に実行される dojo.ready() にフォーカスを設定するコードを追加できます。

于 2012-05-03T09:42:03.657 に答える
0

単に属性を使用するfocusElement

<s:form focusElement="textField" />
于 2012-05-03T11:45:54.103 に答える