- - PR -
AutoPostBackプロパティとFocusの関係
1
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-08-11 15:19
はじめまして。
現在.netで開発を行っています。 まだまだ初心者なので説明の言葉が足りないかも しれませんがよろしくお願いします。 フォームにRadioButtonを配置し、 RadioButtonのSelectedIndexChangedイベントで RadioButtonの横に配置したテキストボックスの Enabledの制御を行いたいのですが、 RadioButtonのAutoPostBackプロパティをTrueにすると フォーカスがどこかへ行ってしまいます。 SelectedIndexChangedイベントのモジュールの最後尾に フォーカスをRadioButtonに当てるコードを記述したのですが 効いていないようで、フォーカスはどこへ行ってしまったのかも わかりません。。 またAutoPostBackプロパティをFalseにするとフォーカスの 制御はうまくいきます。 でもそれだとSelectedIndexChangedイベントを拾えないので そういう訳にもいかず悩んでいます…。 対応策はありますでしょうか? どなたかご存知でしたらお教え願います。 よろしくお願いします。 | ||||||||||||
|
投稿日時: 2005-08-11 17:53
TextBoxの活性・不活性切り替えのためだけにPostBackを行うのはユーザーインターフェースとしてあまり優しくない気がするので、全てクライアントスクリプトでやるのが良いと思います。
ところで、RadioButtonクラスにはSelectedIndexChangedイベントは無いんですけども、RadioButtonListを使っているんでしょうか? | ||||||||||||
|
投稿日時: 2005-08-11 18:23
ぼのぼのさん、ご返答ありがとうございます。
そうです、RadioButtonListを使っています。 変な省略の仕方をしてしまってすみません!! TextBoxの活性・不活性切り替えのために AutoPostBackプロパティで行おうとするのは あまり好ましくないのですね…。 クライアントスクリプトというのは、 フォームのHTMLの記述の中にjavascriptを書き込む ということでしょうか? だとすると、コードモジュールで無理にやろうとしなくても 大丈夫なのですね。 知恵をお貸しいただいてありがとうございます。 調べてやってみます! | ||||||||||||
|
投稿日時: 2005-08-11 19:09
そういう方法もありますが、サーバ側のコードに書く方法もあります。こんな感じ。
あるいは、
みたいに書いておいて、func1()の中身はaspxに直接書く、という方法もあります。 これを使うと、func1()の中身をサーバ側のコードに書くこともできます。 | ||||||||||||
|
投稿日時: 2005-08-12 09:34
ぼのぼのさん、ご回答ありがとうございます。
今回、RadioButtonListで @をチェックしたらテキストAが使用可に、 AをチェックしたらテキストBが使用可に… という風にしたいので ぼのぼのさんに教えていただきました 下記の方法をやってみようと思います。 □サーバ側のPage_Loadに RadioButtonList1.Attributes("onclick") = "func1()" と、記述して □aspx側に <script language="javascript"> function func1() { if ( Form1.RadioButtonList1[1].checked == true ) { Form1.TextBoxA.disabled = true } } </script> と記述したのですが思うように動きません。 チェックを入れたり外したりしても、 何の変化もないままです…。 何度もお聞きしてしまい大変申し訳ないのですが、 何か足りないこと、おかしなところ等 ございましたらお教えいただきたいです。 よろしくお願いいたします。 | ||||||||||||
|
投稿日時: 2005-08-16 11:34
こんにちわ。だいぶ時間があいてしまったので、もう解決しちゃったかもしれませんが…
ぱっと見、セミコロンがありませんね(^^; スクリプトエラーになっているんではないでしょうか?インターネットオプションの詳細設定タブの、「スクリプトのデバッグを使用しない」というチェック外して実行してみてください。 | ||||||||||||
|
投稿日時: 2005-08-16 13:48
ぼのぼのさん、ご回答ありがとうございました。
だいぶ時間は空いてましたが、解決してませんでした×× ので、本当に助かりました。 ぼのぼのさんのご助言どおり、 「スクリプトのデバッグを使用しない」というチェック 外して実行してみました。 このような設定があるのですね。まだまだ勉強不足です。 「セミコロン!!Σ( ̄ロ ̄lll)」とゆう感じでした。 以下のコードで、無事うまくいきました。 ぼのぼのさん、本当にありがとうございました。 function func1() { if ( Form1.RadioButtonList1[1].checked == true ) { Form1.TextBoxA.disabled = true; }Else{ Form1.TextBoxB.disabled = false; } } あと、AutoEventWireupを"True"にするのに気が付かず またまた時間が掛かってしまいました。 本当にまだまだ勉強不足です。。。 |
1