2012-05-03 8 views
0

私はタブ付きパネルを使用するstruts2プロジェクトを持っています。タブはdiv内のjspページです。最初にタブを選択すると、ページの最後にあるjavascriptが目的の入力フィールドに焦点を合わせます。入力欄にフォーカスがない状態でタブが戻ってきても、サブミットしてしまうと、 私は何が起こっているかを見るためにそれを広範囲にデバッグしました、そして、私はページの最後のjavascriptが動いていることに気付きましたが、ただフィールドに集中することができません。 getElementByIdを介してフィールドを見ることができ、値を取得することもできます(私はアラートでこれをテストしました)が、フィールドには何もできません。いずれかのJavaScriptを介してテキストを配置することはできません。別のタブをクリックしてスクリプトをクリックすると、フォーカスが復元されます。投稿後にstuts2 divのフォームタグにフォーカスできません

タブに提出し、テキストフィールドは以下の通りです:

<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" /> 

javascriptのタブJSPの最後に次のようにされています。親ページの関連部分はある

. 
. 
. 
</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> 

私はstruts 2.0.9とdojoを使用しています。

私は実際に送信後に入力フィールドにフォーカスを設定する方法を見つける必要があります。 ご協力いただければ幸いです。申し訳ありませんが、それは少し長い風が、私は明確になりたかった。

ビル

答えて

0

おかげで、あなたは以下に示すように、ページの下部にはJavaScriptを変更してみてくださいことはできますか? - 道場は、初期化が完了する前に

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

するとページが読み込まれると、ページの下部にある<スクリプト>タグが実行される可能性があります。これは、フィールドがフォーカスを取得するのを妨げる可能性があります。 dojo.ready()にフォーカスを設定するコードを追加すると、dojoが初期化された後に実行されます。

+0

おかげを使用し、私はそれを試してみましたが、コードは実行されません。 – billby

+0

どのようなエラーが表示されますか? dojo.jsはあなたのページに含まれていますか? – Dandy

+0

どこにいても表示されるエラーはありません。それはただ静かに失敗します。私はそれをデバッグする方法を見つける必要があると思う。このページには特にdojo.jsはありません。これはstrutsパッケージの一部として含まれていると思います。 dojo.byIdはうまく動作するので、確かにそこにあります。 – billby

0

単純属性にfocusElement

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

ありがとうございますが、属性はv 2.0.9に含まれていません。それが欲しいです。私はまだアップグレードするオプションはありません。 – billby

関連する問題