- PR -

ASP.NETでEnterキー入力でテキストボックスにフォーカスを移動する方法

投稿者投稿内容
納涼床
ベテラン
会議室デビュー日: 2006/06/28
投稿数: 53
お住まい・勤務地: 京都市下京区
投稿日時: 2007-01-29 10:32
ASP.NET(.aspx)でテキストボックス「textboxA」にフォーカスがある状態で
Enterキーを入力すると
ページの再ロードをせずに別のテキストボックス「textboxB」にフォーカス(カーソル)を移動するようにしたいのですが
setfocusやfocusメソッドを記述するだけではうまくいきません。
(テキストボックスへの値の充当はうまくいくのですが・・・)

何かよい方法がありましたらよろしくお願いします。
なお、開発アプリケーションはVisual Studio 2005で言語はVisual Basicです。
かずくん
ぬし
会議室デビュー日: 2003/01/08
投稿数: 759
お住まい・勤務地: 太陽系第三惑星
投稿日時: 2007-01-29 10:43
@IT > Insider.NET > Insider.NET 会議室 > ディレクトリ > Web Application > フォーカス

それらしい項目が、いっぱいころがってますが、探し物は見つかりましたか?
Katze
ベテラン
会議室デビュー日: 2005/11/01
投稿数: 74
お住まい・勤務地: 1台でも せんだい
投稿日時: 2007-01-29 10:49
引用:

ページの再ロードをせずに別のテキストボックス「textboxB」にフォーカス(カーソル)を移動するようにしたいのですが



JavaScriptでキーイベントをひろいEnterキーの場合に「TextboxB」に
フォーカスを移す。

コード:
<html>
<head>
	<script language="javascript">
	<!--
		function procNextCtrl(e){
			var c = e.keyCode;
			if( c == 13 ){
				document.all.item("textboxB").focus();
			}
		}
	//-->
	</script>
</head>
<body>

	<input type="text" name="textboxA" value="" onKeyDown="procNextCtrl(event);"><br>
	<input type="text" name="textboxB" value="">
</body>
</html>



上記は汎用性が無いですけど、こんな感じで
納涼床
ベテラン
会議室デビュー日: 2006/06/28
投稿数: 53
お住まい・勤務地: 京都市下京区
投稿日時: 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の意味です。
まるく
大ベテラン
会議室デビュー日: 2004/01/09
投稿数: 181
投稿日時: 2007-01-29 13:18
引用:

Katzeさんの方法で試してみましたが、


どんな試し方しましたか?
JavaScript関数本体組み込んでないだけでは?
納涼床
ベテラン
会議室デビュー日: 2006/06/28
投稿数: 53
お住まい・勤務地: 京都市下京区
投稿日時: 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>
Katze
ベテラン
会議室デビュー日: 2005/11/01
投稿数: 74
お住まい・勤務地: 1台でも せんだい
投稿日時: 2007-01-29 16:11
引用:

<cc1:LiveTextBox ID="textboxA" runat="server" onkeydown="procNextCtrl(event);"></cc1:LiveTextBox>



aspx側でonkeydownに設定してますが、
コード側で

textboxA.Attributes.Add("onKeyDown", "procNextCtrl(event);")

としてみたらどうでしょうか?

# 出力されたhtmlを見て document.all.item("textboxB").focus(); の
# textboxBも一致するか確認したほうがいいかも・・・
mso
ぬし
会議室デビュー日: 2003/12/04
投稿数: 496
お住まい・勤務地: 宮城
投稿日時: 2007-01-29 16:21
msoです。

使っているブラウザはなんでしょうか?
IE6では出来るみたいです。

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