2008/09/11(Thu) 23:51:14 編集(投稿者)
本当にカーソル移動していますか?
外部js
function MoveFocus(prev, next) {
if (window.event.keyCode == 40 || window.event.keyCode == 13) {
next.focus();
} else if (window.event.keyCode == 38) {
prev.focus();
}
}
以下のようにやればカーソル移動しますが・・・・
既存のコントロールに仕掛けを組み込む場合には、後先考えずにいきなり
コード仕込んで動けばいいのですが、動かなくなったり期待する動作を
しなかった場合など何が悪いのか途方に暮れてしまいます。
一度まともに仕様に見合うコードを手書きで作りこんでから本物に実装した
方が良いですね。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
<META http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<TITLE></TITLE>
<script>
function Move(p, n) {
var s = null;
var c = "white";
if (event.keyCode == 40 || event.keyCode == 13) s = n, c = "orange";
else if (event.keyCode == 38) s = p, c = "pink";
else ;
setTimeout(function(S,C,E) {
return function() {
if (S) {
var o = document.getElementById(S);
o.style.backgroundColor= C;
o.focus();
}
else {
E.focus();
E.style.backgroundColor = C;
}
}
}(s, c, event.srcElement), 1);
}
</script>
</script>
</HEAD>
<BODY>
A<input type=text id="T1" onkeydown="Move(null, 'T2')"/>
B<input type=text id="T2" onkeydown="Move('T1', 'T3')"/>
C<input type=text id="T3" onkeydown="Move('T2', null)"/>
</BODY>
</HTML>