- - PR -
AutoPostBack後のフォーカス
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2004-07-22 15:20
こんにちは。
C#とASP.NETで開発をしております。 ドロップダウンリストで「その他」というのを選択したら、テキストボックスを表示するといったことをやりたいのですが、うまくいきません。 AutoPostBackをTrueにしてJavaScriptでフォーカスを合わせようとしたのですが、スクリプトエラーがでます。 function setFocus() { document.userinfo.txtOther.focus(); } というJavaScriptでサーバー側で、Attributes.Addしています。 そこで「;がありません」というエラーが出てしまいます。 簡単なことで申し訳ないのですが、教えてください。 | ||||
|
投稿日時: 2004-07-22 15:48
かなさんのことや、かなさんの環境について全く知らない人の気持ちになって、ご自分の書き込みを見て、過不足なく情報を伝えているか、かなさんと同じ環境を作って再現できるか(実際作る作らないは別にして)を考えてみてください。
「テキストボックスを表示する」のと「フォーカスを合わせる」の関係が分かりません。 やりたいことはどっちですか? 「AutoPostBackをTrueに(する)」のと「JavaScriptでフォーカスを合わせようとしたのですが、スクリプトエラーがでます」の関係も分かりません、具体的にどうしているのかも分かりません。 エラーが起きているのはJavaScriptですよね。ポストバックしたときに動的に書いているのかもしれませんが、Script自体は問題がないのにポストバック時に動的に書くとエラーがでるということですか?それともポストバックする/しないは関係なくそのScriptが問題ということでしょうか。 後者なら「AutoPostBackをTrue」や「Attributes.Addしています」は過不足の過です。 Attributes.Addは何のAttributesにAddしていますか? そして function setFocus() { document.userinfo.txtOther.focus(); } このソースをAddしているということですか? setFocus()を呼ぶようなScriptをAddしているのではなくて? 再現できるようにお願いします。 [ メッセージ編集済み 編集者: 一郎 編集日時 2004-07-22 15:49 ] | ||||
|
投稿日時: 2004-07-22 15:49
こんにちは。
ちゃんと上のように出力されていましたか? スクリプトエラーで表示されているラインと文字はそこを指していましたか? 差し支えなければサーバ側のコード(Attributes.Addの部分など)を見せて頂けないでしょうか。 #余談ですが、前に質問された結果はどうなりましたか? #ちょっと気になってたのでリンク先の方で報告して頂ければ幸いです。 _________________ まゆりん @ わんくま同盟 Blog る。 | ||||
|
投稿日時: 2004-07-22 16:18
言葉が足りませんでした。あれでは、わかりませんね。。 すいません。
私がやりたいことは、ドロップダウンリストで「その他」とういう項目が選択されたら、テキストボックスを表示し、フォーカスをその表示されたテキストボックスに合わせたいのです。 AutoPostBackをTrueにすることで、SelectedIndexChangedイベント処理が走り、テキストボックスを表示することは出来ました。でもそのテキストボックスにフォーカスを合わせるJavaScript(setFocus)をAddすると、そこでスクリプトエラーが発生しました。 サーバー側のコードは ddlAddress.Attributes.Add("onchange", "setFocus()"); です。 生成されたHTMLは <select name="ddlAddress" onchange="setFocus()__doPostBack('ddlAddress','')" language="javascript" id="ddlAddress" > となっています。 よろしくお願いします。 | ||||
|
投稿日時: 2004-07-22 16:28
onchange="setFocus()__doPostBack('ddlAddress','')"
内で、 setFocus() と __doPostBack('ddlAddress','') のふたつの関数呼び出しの文があるのに、間に;がないのはまずいですよね。 あと、このsetFocus()はタイミング的に遅いんじゃないでしょうか。 「その他」を選択して、ポストバックされた時にsetFocus()の呼び出しを追加しているんですよね。 setFocus()は呼び出されないのではないですか? 次のonchange(「その他」から別の項目を選択)で呼ばれるでしょうが。 | ||||
|
投稿日時: 2004-07-22 16:41
「フォーカス」で検索するとヒットしますよ〜
この辺@ この辺A | ||||
|
投稿日時: 2004-07-22 16:49
「;がありません」については一郎さんの仰るとおりですね。
で、フォーカスを当てるタイミングですが ドロップダウンリストのonchangeではなく、フォームのonloadでsetFocus()を呼べば PostBack後にフォーカスが当たるようになると思います。 --------------- って、前にも同じような回答していたの忘れてました えんぞさん、ありがとうございます〜。 #あれから返事来てないんですが、解決したのかしら? _________________ Delphiと切なさと心強さと [ メッセージ編集済み 編集者: まゆりん 編集日時 2004-07-22 16:56 ] | ||||
|
投稿日時: 2004-07-22 17:19
皆さんレスありがとうございました。
まゆりんさんのおっしゃる通り、フォームのonloadでsetFocus()を呼んだら、出来ました。 ですが、「次へ」ボタン押下時、入力エラーなどがあった場合で再表示される場合でもこのテキストボックスにフォーカスがあたってしまいます。。 |