- - PR -
ログインボタンにフォーカスを当てたい
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2008-02-26 11:44
デザイナからではなく、コード表示にしてTextBoxのタグ中に
rainさんの提示コードの様に onkeydown="javascript:return clickTargetOnEnter('Button1');" と記述してください。 | ||||||||
|
投稿日時: 2008-02-26 12:04
「onkeydownはTextBoxの有効なプロパティではありません」というエラーになってしまいます。 rainさんのコードはINPUTですが私が書いているのはTextBoxです。 この違いがあるのではないでしょうか? | ||||||||
|
投稿日時: 2008-02-26 12:20
Page_Loadなどで
と、してみてください。 | ||||||||
|
投稿日時: 2008-02-26 12:54
マスターページを使った構成だともう少し工夫がいると思いますが、
参考になるとは思うので貼っておきます。
「onkeydownはTextBoxの有効なプロパティではありません」という警告が出ますが、 ビルドはできる&雰囲気は感じ取れると思うのでそのままにしてあります。 | ||||||||
|
投稿日時: 2008-02-26 15:11
rainさんのサンプル+くまっちさんのコードで実現できました。
ありがとうございます。 マスターページで使用するために更に質問がありますので教えてください。 ログインボックスはマスターページに設置してあるので、ログインボタンは次のような展開になっていました。 <input type="submit" name="ctl00$LoginCtrl1$LoginView1$Login1$LoginButton" value="ログイン" onclick="javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("ctl00$LoginCtrl1$LoginView1$Login1$LoginButton", "", true, "ctl00$ctl00$Login1", "", false, false))" id="ctl00_LoginCtrl1_LoginView1_Login1_LoginButton" /> そこで、ユーザーIDとパスワードに次のようにして適用しました。 Dim login1 As Login = TryCast(LoginView1.FindControl("Login1"), Login) Dim UserName As TextBox = TryCast(login1.FindControl("UserName"), TextBox) UserName.Attributes.Add("onkeydown", "javascript:return clickTargetOnEnter('ctl00_LoginCtrl1_LoginView1_Login1_LoginButton');") Dim Password As TextBox = TryCast(login1.FindControl("Password"), TextBox) Password.Attributes.Add("onkeydown", "javascript:return clickTargetOnEnter('ctl00_LoginCtrl1_LoginView1_Login1_LoginButton');") 一応動いたのですが次の疑問が浮かびました。 1.指定するのはnameの"ctl00$LoginCtrl1$LoginView1$Login1$LoginButton"のほうが正しいのではないか? 2.この名称(nameまたはID)はどの画面でも同じなのか? です。 ご教授、よろしくお願いします。 | ||||||||
|
投稿日時: 2008-02-26 15:40
1.いえ、IDの方を指定すべきです。理由は2.とも関連してきます。
2.画面により違ってくる場合がありますので固定と捕らえてはいけません。 マスターページなど使用している場合など デザイナ上でのIDと実際にクライアントに出力されるIDとで違う場合が在ります。 (IDの重複を避ける為、ASP独自の命名規則に従い親コントロールのIDが子に付与されます) どうするのが良いのかといいますと・・・
などの様に、オブジェクト.ClientIDにてクライアントに出力される実際のIDを使い JavaScriptを出力すべきです。 1.の質問に戻りますが、この為にNameではなくIDで指定すべきなのです。 [補足] HTMLの仕様上、タグに付けるIDはドキュメント中、唯一である必要があり Nameは複数存在してもよいものとされています。 getElementById()とgetElementByName()の戻す値が違う理由でもあります。 [ メッセージ編集済み 編集者: くまっち 編集日時 2008-02-26 15:50 ] | ||||||||
|
投稿日時: 2008-02-26 16:25
ありがとうございます。
納得できました。 ソースの方もIDをベタ打ちせずにすみました。 |