DOBON.NET DOBON.NETプログラミング掲示板過去ログ

Enter キーでのフォーカス移動

環境/言語:[Win 2000 Pro ASP.NET]
分類:[ASP.NET]

いつもお世話になります。

今回はEnterキーでのフォーカス移動について教えて欲しいのですが

概要:ASP.NET においてEnterキーにてフォーカスを移動する。

やったこと:インターネットでこの関連の記事を探し

HTML
 <FORM id="Form1" onkeydown="if(event.keyCode==13){if(window.event.srcElement.type=='text'){return false;}}"
method="post" runat="server">

と指定し
javascriptのファイルに
window.document.onkeydown = fnc_goNext;

var nextObj = "";
var nextObj1 = "";

function fnc_setNext(strName,strName1){
nextObj = strName;
nextObj1 = strName1;
}

function fnc_goNext(){

if (event.keyCode == 13){
if(nextObj != ""){
if(document.Form1.elements(nextObj)){
document.Form1.elements(nextObj1).select();
document.Form1.elements(nextObj1).focus();
}
}
}
}

上記を記述し

VBのページロード
If Not IsClientScriptBlockRegistered("clientScript") Then
Dim scpt As String = "<SCRIPT language='JavaScript' src='Enter.js'></SCRIPT>"
RegisterClientScriptBlock("clientScript", scpt)
End If
Me.TextBox1.Attributes("onactivate") = "fnc_setNext('TextBox1','TextBox2');"
Me.TextBox2.Attributes("onactivate") = "fnc_setNext('TextBox2','TextBox3');"
If Not IsClientScriptBlockRegistered("clientScript") Then
Dim scpt As String = "<SCRIPT language='JavaScript' src='Enter.js'></SCRIPT>"
RegisterClientScriptBlock("clientScript", scpt)
End If
Me.TextBox1.Attributes("onactivate") = "fnc_setNext('TextBox1','TextBox2');"
Me.TextBox2.Attributes("onactivate") = "fnc_setNext('TextBox2','TextBox3');"

に上記を記述したのですが、この実装だとtextbox1でEnter押下した時も
textbox2でEnter押下した時もtextbox3にフォーカスがいってしまいます。
うまくEnterでフォーカス移動するにはどうすればよいのでしょうか??
他の方法でもよいのでいい方法があれば宜しくお願いします。
Dim scpt As String = "<SCRIPT language='JavaScript' src='Enter.js'></SCRIPT>"
RegisterClientScriptBlock("clientScript", scpt)
End If
Me.TextBox1.Attributes("onactivate") = "fnc_setNext('TextBox1','TextBox2');"
Me.TextBox2.Attributes("onactivate") = "fnc_setNext('TextBox2','TextBox3');"

を2回書いてしまいました。
申し訳ありません。
Mooです。
これってJScriptの質問ですね。

イベントが連鎖して1->2->3と遷移してしまっているのではないでしょうか。
フォーカス移動後にイベントを連鎖させないように
KeyCode=0をセットしてみてはどうでしょうか(検証していません)

KeyCode=13をもらったらTabキー(KeyCode=7だったかな?)と同じ動作をしたいわけですよね。


うーん、それにしてもあまりWeb向けじゃない動作ですね。

DOBON.NET | プログラミング道 | プログラミング掲示板