- PR -

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

投稿者投稿内容
納涼床
ベテラン
会議室デビュー日: 2006/06/28
投稿数: 53
お住まい・勤務地: 京都市下京区
投稿日時: 2007-01-29 17:49
Katzeさん>

「textboxA.Attributes.Add("onKeyDown", "procNextCtrl(event);") 」の記述は
Page_Loadのところでよろしいでしょうか?

msoさん>

ブラウザのバージョンはwindows xp SP2に組み込まれている
「IE6.0.2900.2180」です。
納涼床
ベテラン
会議室デビュー日: 2006/06/28
投稿数: 53
お住まい・勤務地: 京都市下京区
投稿日時: 2007-01-29 18:10
「textboxA.Attributes.Add("onKeyUp", "procNextCtrl(event);") 」を
Page_Loadの箇所に記述してテストしたところ、うまく動作しました。
アドバイスありがとうございました。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2007-01-29 22:07
http://www.dart.com/expanded/livecontrols.aspx?source=aspnetfeature
使用するツールの出所は、示して欲しい。

 このページをチラ見しただけですが、この TextBox のサーバ側イベントに、onkeydown が存在しているのではないでしょうか。その為、HTML 上に書いた "onkeydown" が、サーバコード側のイベント ハンドラと認識されたのでしょう。

_________________
ごろう
ベテラン
会議室デビュー日: 2006/12/06
投稿数: 50
お住まい・勤務地: 神奈川県横浜市 横浜駅の海方面
投稿日時: 2007-10-23 14:41
結構前のスレッドですが、内容が同じなので、
新たにスレッドを追記させていただきます。

引用:

Katzeさんの書き込み (2007-01-29 10:49) より:

コード:
<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>





上記のコードを少し変えて、
・テキストボックスに3文字以上入力されたら
→ボタンにフォーカスを移動する。
という事をやろうとしたのですが、
テキストボックスをクリックするだけで、
ボタンにフォーカスが移動してしまっています(ボタンが青くなっている)。

ちなみに、
3文字以上入力した場合にEnterを押下すると、
ボタンを押下してしまいます。
フォーカス遷移だけはできないのでしょうか?
よろしくお願いします。

コード:
		<script language="javascript">
			function setFocus(e){	
				var c = e.keyCode;
				if(13 == c) {
				n = document.Form1.txtNo.value.length;
				if(3 <= n){
					document.all('btnCommit').focus();
					} else {document.all('txtNo').focus();
						return false;
					}
				}
			}
		</script>
	</HEAD>
--中略--
<TD>
<asp:textbox id="txtNo" runat="server" Width="193px" onKeyDown="setFocus(event)"></asp:textbox>
<asp:Button id="btnCommit" runat="server" Text="実行"></asp:button>
</TD>

Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2007-10-23 20:59
onkeydown="return true;"

onkeydown="return false;"
とで、どうかわるかやってみる

それらとの違いを考える
ごろう
ベテラン
会議室デビュー日: 2006/12/06
投稿数: 50
お住まい・勤務地: 神奈川県横浜市 横浜駅の海方面
投稿日時: 2007-10-23 21:11
引用:

Jittaさんの書き込み (2007-10-23 20:59) より:
onkeydown="return true;"

onkeydown="return false;"
とで、どうかわるかやってみる

それらとの違いを考える



onkeydown="return false;"
でできました。

ありがとうございました。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2007-10-24 07:50
引用:

ごろうさんの書き込み (2007-10-23 21:11) より:
引用:

Jittaさんの書き込み (2007-10-23 20:59) より:
onkeydown="return true;"

onkeydown="return false;"
とで、どうかわるかやってみる

それらとの違いを考える



onkeydown="return false;"
でできました。

ありがとうございました。



ほんまかいな!?
入力検証はどないしたん??
Enter押してサブミットされへんからOKとか、短絡的に考えてへん?
ごろう
ベテラン
会議室デビュー日: 2006/12/06
投稿数: 50
お住まい・勤務地: 神奈川県横浜市 横浜駅の海方面
投稿日時: 2007-10-24 15:03
引用:

Jittaさんの書き込み (2007-10-24 07:50) より:
引用:

ごろうさんの書き込み (2007-10-23 21:11) より:
引用:

Jittaさんの書き込み (2007-10-23 20:59) より:
onkeydown="return true;"

onkeydown="return false;"
とで、どうかわるかやってみる

それらとの違いを考える



onkeydown="return false;"
でできました。

ありがとうございました。



ほんまかいな!?
入力検証はどないしたん??
Enter押してサブミットされへんからOKとか、短絡的に考えてへん?



その後、いろいろやってみた結果、
textBoxのプロパティにonKeyDown="setFocus(event)"
として、
JavaScriptで
function setFocus(e){
var c = e.keyCode;
if(13 == c) {
n = document.Form1.txtBox.value.length;
if(3 <= n){
event.returnValue=false
document.Form1.btnCommit.focus();
}}}
とやって、できるようになりました。
ありがとうございました。

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