- PR -

AutoPostBack後のフォーカス

投稿者投稿内容
かな
会議室デビュー日: 2004/06/30
投稿数: 10
投稿日時: 2004-07-22 15:20
こんにちは。
C#とASP.NETで開発をしております。

ドロップダウンリストで「その他」というのを選択したら、テキストボックスを表示するといったことをやりたいのですが、うまくいきません。
AutoPostBackをTrueにしてJavaScriptでフォーカスを合わせようとしたのですが、スクリプトエラーがでます。

function setFocus() {
document.userinfo.txtOther.focus();
}
というJavaScriptでサーバー側で、Attributes.Addしています。
そこで「;がありません」というエラーが出てしまいます。

簡単なことで申し訳ないのですが、教えてください。

一郎
ぬし
会議室デビュー日: 2002/10/11
投稿数: 1081
投稿日時: 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 ]
まゆりん
ぬし
会議室デビュー日: 2002/08/12
投稿数: 539
お住まい・勤務地: よこはま
投稿日時: 2004-07-22 15:49
こんにちは。
引用:

かなさんの書き込み (2004-07-22 15:20) より:
function setFocus() {
document.userinfo.txtOther.focus();
}
というJavaScriptでサーバー側で、Attributes.Addしています。


ちゃんと上のように出力されていましたか?
スクリプトエラーで表示されているラインと文字はそこを指していましたか?

差し支えなければサーバ側のコード(Attributes.Addの部分など)を見せて頂けないでしょうか。

#余談ですが、前に質問された結果はどうなりましたか?
#ちょっと気になってたのでリンク先の方で報告して頂ければ幸いです。
_________________
まゆりん @ わんくま同盟
Blog る。
かな
会議室デビュー日: 2004/06/30
投稿数: 10
投稿日時: 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" >
となっています。

よろしくお願いします。
一郎
ぬし
会議室デビュー日: 2002/10/11
投稿数: 1081
投稿日時: 2004-07-22 16:28
onchange="setFocus()__doPostBack('ddlAddress','')"
内で、 setFocus() と __doPostBack('ddlAddress','') のふたつの関数呼び出しの文があるのに、間に;がないのはまずいですよね。

あと、このsetFocus()はタイミング的に遅いんじゃないでしょうか。
「その他」を選択して、ポストバックされた時にsetFocus()の呼び出しを追加しているんですよね。
setFocus()は呼び出されないのではないですか?
次のonchange(「その他」から別の項目を選択)で呼ばれるでしょうが。
えんぞ@?
ぬし
会議室デビュー日: 2004/07/06
投稿数: 271
お住まい・勤務地: はまっこ
投稿日時: 2004-07-22 16:41
「フォーカス」で検索するとヒットしますよ〜
この辺@
この辺A
まゆりん
ぬし
会議室デビュー日: 2002/08/12
投稿数: 539
お住まい・勤務地: よこはま
投稿日時: 2004-07-22 16:49
「;がありません」については一郎さんの仰るとおりですね。

で、フォーカスを当てるタイミングですが
ドロップダウンリストのonchangeではなく、フォームのonloadでsetFocus()を呼べば
PostBack後にフォーカスが当たるようになると思います。
---------------
って、前にも同じような回答していたの忘れてました
えんぞさん、ありがとうございます〜。

#あれから返事来てないんですが、解決したのかしら?

_________________
Delphiと切なさと心強さと

[ メッセージ編集済み 編集者: まゆりん 編集日時 2004-07-22 16:56 ]
かな
会議室デビュー日: 2004/06/30
投稿数: 10
投稿日時: 2004-07-22 17:19
皆さんレスありがとうございました。

まゆりんさんのおっしゃる通り、フォームのonloadでsetFocus()を呼んだら、出来ました。
ですが、「次へ」ボタン押下時、入力エラーなどがあった場合で再表示される場合でもこのテキストボックスにフォーカスがあたってしまいます。。

スキルアップ/キャリアアップ(JOB@IT)