- - PR -
ASP.NETでEnterキー入力でテキストボックスにフォーカスを移動する方法
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2007-01-29 10:32
ASP.NET(.aspx)でテキストボックス「textboxA」にフォーカスがある状態で
Enterキーを入力すると ページの再ロードをせずに別のテキストボックス「textboxB」にフォーカス(カーソル)を移動するようにしたいのですが setfocusやfocusメソッドを記述するだけではうまくいきません。 (テキストボックスへの値の充当はうまくいくのですが・・・) 何かよい方法がありましたらよろしくお願いします。 なお、開発アプリケーションはVisual Studio 2005で言語はVisual Basicです。 | ||||||||
|
投稿日時: 2007-01-29 10:43
@IT > Insider.NET > Insider.NET 会議室 > ディレクトリ > Web Application > フォーカス
それらしい項目が、いっぱいころがってますが、探し物は見つかりましたか? | ||||||||
|
投稿日時: 2007-01-29 10:49
JavaScriptでキーイベントをひろいEnterキーの場合に「TextboxB」に フォーカスを移す。
上記は汎用性が無いですけど、こんな感じで | ||||||||
|
投稿日時: 2007-01-29 11:32
Katzeさんの方法で試してみましたが、
「'procNextCtrl' は 'ASP.form_aspx' のメンバではありません。」 「式が必要です。」 とエラーが出てしまいました。 ちなみにフォームのソースは下記のとおりです。 <%@ Page Language="VB" AutoEventWireup="false" CodeFile="form.aspx.vb" Inherits="form" %> <%@ Register Assembly="Dart.PowerWEB.LiveControls" Namespace="Dart.PowerWEB.LiveControls" TagPrefix="cc1" %> <% Response.Expires = 0 Response.AddHeader("pragma", "no-cache") Response.AddHeader("cache-control", "private") Response.CacheControl = "no-cache"%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> </head> <body style="font-weight: normal; font-size: 9pt; text-transform: none; color: black; font-style: normal; background-color: #ffffcc; font-variant: normal"> <form id="form1" runat="server"> <asp:Panel ID="wcpnlPageD" runat="server" > <div> <cc1:LiveTextBox ID="textboxA" runat="server" ></cc1:LiveTextBox> <cc1:LiveTextBox ID="textboxB" runat="server"></cc1:LiveTextBox> </div> </asp:Panel> </form> </body> </html> なお、「cc1」とはlivecontrolの意味です。 | ||||||||
|
投稿日時: 2007-01-29 13:18
どんな試し方しましたか? JavaScript関数本体組み込んでないだけでは? | ||||||||
|
投稿日時: 2007-01-29 14:45
javascript本文を組み込んでも同様のエラーが出ます。
書式が違うんですかねぇ・・・? 試したソースの記述は下記のとおりです。 <%@ Page Language="VB" AutoEventWireup="false" CodeFile="form.aspx.vb" Inherits="form" %> <%@ Register Assembly="Dart.PowerWEB.LiveControls" Namespace="Dart.PowerWEB.LiveControls" TagPrefix="cc1" %> <% Response.Expires = 0 Response.AddHeader("pragma", "no-cache") Response.AddHeader("cache-control", "private") Response.CacheControl = "no-cache"%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <script type="text/javascript"> function procNextCtrl(e){ var c = e.keyCode; if( c == 13 ){ document.all.item("textboxB").focus(); } } </script> </head> <body style="font-weight: normal; font-size: 9pt; text-transform: none; color: black; font-style: normal; background-color: #ffffcc; font-variant: normal"> <form id="form1" runat="server"> <asp:Panel ID="wcpnlPageD" runat="server" > <div> <cc1:LiveTextBox ID="textboxA" runat="server" onkeydown="procNextCtrl(event);"></cc1:LiveTextBox> <cc1:LiveTextBox ID="textboxB" runat="server"></cc1:LiveTextBox> </div> </asp:Panel> </form> </body> </html> | ||||||||
|
投稿日時: 2007-01-29 16:11
aspx側でonkeydownに設定してますが、 コード側で textboxA.Attributes.Add("onKeyDown", "procNextCtrl(event);") としてみたらどうでしょうか? # 出力されたhtmlを見て document.all.item("textboxB").focus(); の # textboxBも一致するか確認したほうがいいかも・・・ | ||||||||
|
投稿日時: 2007-01-29 16:21
msoです。
使っているブラウザはなんでしょうか? IE6では出来るみたいです。 |