<table>
  <tr>
    <td><input id="t0" onkeydown="ys(this)" /></td>
    <td><input id="t1" onkeydown="ys(this)" /></td>
    <td><input id="t2" onkeydown="ys(this)" /><input id="t3" onkeydown="ys(this)" /></td>
  </tr>
</table>
<script language=JavaScript>
function ys(o)
  {var ind;
   var inp=document.getElementsByTagName("INPUT");
   if(event.keyCode==38)
     ind=o.id.substring(1)-1;
   if(event.keyCode==40)
     ind=o.id.substring(1)-0+1;
   if(ind>=0 && ind<inp.length)
     eval("t"+ind).focus()
  }
</script>

解决方案 »

  1.   

    比如說textbox的位置是這樣排的(t_xx為textbox的名字)
    t_11 t_12 t_13
    t_21 t_22 t_23
    t_31 t_32 t_33<input type=textbox name="t_xx" onkeydown="change(this.name.substring(2,4))">
    ...
    <script>
    function change(coor){
    if(event.keyCode==37)
    if(coor.substring(0, 1)!=1)
    eval("document.all.t_"+(parseInt(coor.substring(0, 1)-1)+coor.substring(1, 2)).focus();
    if(event.keyCode==38)
    if(coor.substring(1, 2)!=1)
    eval("document.all.t_"+parseInt(coor.substring(0, 1)+(parseInt(coor.substring(1, 2))-1)).focus();
    if(event.keyCode==39)
    if(coor.substring(0, 1)!=9)
    eval("document.all.t_"+(parseInt(coor.substring(0, 1)+1)+coor.substring(1, 2).focus());
    if(event.keyCode==40)
    if(coor.substring(1, 2)!=9)
    eval("document.all.t_"+parseInt(coor.substring(0, 1)+(parseInt(coor.substring(1, 2))+1)).focus();
    }
    </script>
      

  2.   

    <input type=textbox name="t_xx" onkeydown="change(this.name.substring(2,4))">
    ...
    <script>
    function change(coor){
    if(event.keyCode==37)
    if(coor.substring(0, 1)!=1)
    eval("document.all.t_"+(parseInt(coor.substring(0, 1)-1)+coor.substring(1, 2)).focus();
    if(event.keyCode==38)
    if(coor.substring(1, 2)!=1)
    eval("document.all.t_"+parseInt(coor.substring(0, 1)+(parseInt(coor.substring(1, 2))-1)).focus();
    if(event.keyCode==39)
    if(coor.substring(0, 1)!=9)
    eval("document.all.t_"+(parseInt(coor.substring(0, 1)+1)+coor.substring(1, 2)).focus();
    if(event.keyCode==40)
    if(coor.substring(1, 2)!=9)
    eval("document.all.t_"+parseInt(coor.substring(0, 1)+(parseInt(coor.substring(1, 2))+1)).focus();
    }
    </script>
    改一下
      

  3.   

    你用onkeypress事件来判断上下左右按键,再根据当前textbox的id和按键值计算得出相应的textbox的id试试看。
      

  4.   

    這次是真的了 剛才的有錯<input type=textbox name="t_11" onkeydown="change(this.name.substring(2, 4))"><input type=textbox name="t_12" onkeydown="change(this.name.substring(2, 4))"><input type=textbox name="t_13" onkeydown="change(this.name.substring(2, 4))">
    <br>
    <input type=textbox name="t_21" onkeydown="change(this.name.substring(2, 4))"><input type=textbox name="t_22" onkeydown="change(this.name.substring(2, 4))"><input type=textbox name="t_23" onkeydown="change(this.name.substring(2, 4))">
    <br>
    <input type=textbox name="t_31" onkeydown="change(this.name.substring(2, 4))"><input type=textbox name="t_32" onkeydown="change(this.name.substring(2, 4))"><input type=textbox name="t_33" onkeydown="change(this.name.substring(2, 4))"><script>
    var max=3;
    function change(coor){
    if(event.keyCode==37)
    if(coor.substring(1, 2)!="1")
    eval("document.all.t_"+coor.substring(0, 1)+(parseInt(coor.substring(1, 2))-1)).focus();
    if(event.keyCode==38)
    if(coor.substring(0, 1)!="1")
    eval("document.all.t_"+(parseInt(coor.substring(0, 1))-1)+coor.substring(1, 2)).focus();
    if(event.keyCode==39)
    if(coor.substring(1, 2)!=max)
    eval("document.all.t_"+coor.substring(0, 1)+(parseInt(coor.substring(1, 2))+1)).focus();
    if(event.keyCode==40)
    if(coor.substring(0, 1)!=max)
    eval("document.all.t_"+(parseInt(coor.substring(0, 1))+1)+coor.substring(1, 2)).focus();
    }
    </script>
      

  5.   

    多谢各位。如果不规定TextBox的规则,有其他的方法吗?向上的时候,如何从当前焦点的TextBox得到上面行中相同位置的TextBox的id?假设id没有规则