- - PR -
ログインボタンにフォーカスを当てたい
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2008-02-22 20:17
こんにちは。
VS2005のWEBサイトのことを教えてください。 マスターページにログインボックスを設けてログインできるようにしています。 各ページのPage_Loadで次のようにしてログインボタンをデフォルトボタンに設定しました。 Dim loginB As Button = Master.FindControl("Login1").FindControl("LoginView1").FindControl("Login1").FindControl("LoginButton") If loginB Is Nothing Then 'ページ毎のデフォルトボタンを設定 Else Dim script As String = _ "<script language='JavaScript'>" _ + "document.getElementById('" _ + loginB.ClientID _ + "').focus(); <" + "/script>" RegisterStartupScript("setfocus", script) End If 上記のコードでデフォルトボタンは設定できたのですが、ユーザーIDとパスワードを入力してEnterキーを押すと画面によって動きがバラバラになってしまいます。 考えてみれば当然で、表示直後は確かにログインボタンがデフォルトになっていますがユーザーIDを入力しようとした瞬間にボタンからフォーカスが外れてしまいます。 ユーザーID、パスワードを入力したときにログインボタンにフォーカスを当てるにはどうしたら良いのでしょうか? ユーザーIDとパスワードのTextChangedイベント内でlbtn.Focus()と書いてみましたがダメでした。 | ||||||||
|
投稿日時: 2008-02-22 22:22
考えてみたんですが。
まず「ユーザーID、パスワードを入力したときに・・」とありますがトリガーがありません。のでパスワード入力時にEnterキーをトリガーにチェック後、PostBack or フォーカス移動とか・・・・。 参考になればと思います。 | ||||||||
|
投稿日時: 2008-02-25 09:10
こんにちは。
>ユーザーIDとパスワードのTextChangedイベント内でlbtn.Focus()と書いてみましたがダメでした。 どうダメだったのか具体的に書いて頂けると良いかと思います。 基本的にはユーザーID、パスワードのTextboxにTextChangedもしくはLeaveでイベント発生時に両方が入力されている場合Focusを設定する処理で拾えるとは思うのですが。 _________________ こえ部やめました(つд`) | ||||||||
|
投稿日時: 2008-02-25 10:22
私も仕組みは知らないのですが、普通は、こういうこと(フォーカスを動的に設定すること)はしないのではないだろうかと思います。 インターネット上のシステムをいくつか見てみましたが、アクティブな form で Enter キーを押すと submit ボタンが自動的に押される機能(ブラウザーが持っている機能)を使うか、あるいは、なにか別の方法で Enter キーのキーイベントを捕まえているような感じがします。 どっちかというと「ウェブデザイン」的な話で、プログラマーじゃなくても知っているようなことなのでしょうけど、どうやるんでしょうね? | ||||||||
|
投稿日時: 2008-02-25 10:42
formタグにdefaultbutton=[ボタンコントロールID]の属性を追加すれば
TextBox等一部コントロール上でのEnter押下時に自動でボタン押下するように 動作させることは可能です。 ただ、フォームの標準ボタンは別に存在し 特定のコントロールの場合のみ別ボタンによるポストが必要で有る場合 Enter押下を捕らえ、目的のボタンコントロール.click()を呼び出す必要が あるかと思います。 | ||||||||
|
投稿日時: 2008-02-25 11:18
ASP.NETの場合、マスターページ上での入力項目も含め、1画面全体がひとつのFORMだと思っていますが合ってますでしょうか? そうだとすると、意味のあるグループごとにデフォルトで処理させたいボタンが違うと思います。 例えば、ひとつの画面にログインボックスと検索ボタンがある場合、ログインボックスのユーザーID、パスワードを入力した時はログインボタンを押したことにしたいし、検索文字列を入力したときは検索ボタンを押したことにしたいという具合です。 これを実現するためにはくまっちさんのご指摘のようにEnter押下を認識し、処理を振り分ける必要があると思いますが、具体的にはどうすれば良いのでしょうか? | ||||||||
|
投稿日時: 2008-02-25 11:43
例えばこんな感じです。
submitボタンが混じってたらうまくいかないかもしれませんが。
| ||||||||
|
投稿日時: 2008-02-26 11:22
ButtonコントロールにはOnClientClickにalert('XXX')と書けたのですが、テキストボックスだとOnClientClickプロパティがありませんでした。 どのようにしたら書けるのでしょうか? |