- PR -

AutoPostBack後のフォーカス

投稿者投稿内容
なちゃ
ぬし
会議室デビュー日: 2003/06/11
投稿数: 872
投稿日時: 2004-07-22 17:53
引用:

かなさんの書き込み (2004-07-22 17:19) より:
ですが、「次へ」ボタン押下時、入力エラーなどがあった場合で再表示される場合でもこのテキストボックスにフォーカスがあたってしまいます。。


…インデックスが変化しているときはいつでもフォーカス移動してしまうような気がしますが…
インデックスを選択したときのポストバック時のみフォーカスを移動するようにしないと駄目なんではないでしょうか?
※どうやればいいのかは良く知りません、ごめんなさい。
えんぞ@?
ぬし
会議室デビュー日: 2004/07/06
投稿数: 271
お住まい・勤務地: はまっこ
投稿日時: 2004-07-22 18:10
まゆりんさん記載の方法でシンプルなロジックが思い浮かばなかったので、
手法はお譲りするとして...

↓先ほどレスのリンクを参考にすると、こういう方法もあります。
Private Sub DropDown_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles DropDown.SelectedIndexChanged
  'その他選択時
  If Me.DropDown.SelectedItem.Value.Equals("999") Then
    'フォーカスセットしたい項目
    Me.RegisterStartupScript("setFocus", "<script language=JavaScript>document.userinfo.txtOther.focus();</script>")
  End If
End Sub
まゆりん
ぬし
会議室デビュー日: 2002/08/12
投稿数: 539
お住まい・勤務地: よこはま
投稿日時: 2004-07-22 18:21
引用:

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


ドロップダウンリストで「その他」が選択された場合のみsetFocus()を呼べばよいかと。

1.サーバ側からJavaScriptのコードを吐き出している場合
 ドロップダウンリストで選択された値を見て「その他」だった場合のみsetFocus()を呼ぶようにする。

2.クライアント側(HTML)で直接呼び出している場合
 サーバ側で判定用の変数を設け、選択した値を見て「その他」だった場合は変数にフラグになるような値を入れ
 ("1"とか)クライアント側でonloadをつけるか否か判断する。(ちょっと力ずくな方法ですけど・・・)
 <% If flg = 1 Then %>
 <body onload="setFocus()">
 <% Else %>
 <body>
 <% End If %>
 
私が以前やっていたのはこの2つくらいですね。

_________________
Delphiと切なさと心強さと

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

まゆりんさん、大変丁寧な対応をして頂きありがとございます。
まゆりんさんのやり方でやったら出来ました。

本当にありがとうござました。

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