提供两个函数,可以很方便的使用
<input name=txt1 value=free onkeydown=moveCursor(this)>
<input name=txt2 value=falcon onkeydown=moveCursor(this)>
<script>
function moveCursor(obj){
if(obj.name=="txt1"&&event.keyCode==39&&getCursorPos(obj)==obj.value.length){event.returnValue=false;setCursorPos(txt2,0);} if(obj.name=="txt2"&&event.keyCode==37&&getCursorPos(obj)==0){event.returnValue=false;setCursorPos(txt1,txt1.value.length);}
}
function getCursorPos(obj) 
{
  obj.focus();
 var currentRange=document.selection.createRange();
 var workRange=currentRange.duplicate();
 obj.select();
 var allRange=document.selection.createRange();
 var pos=0;
 while(workRange.compareEndPoints("StartToStart",allRange)>0)
 {
  workRange.moveStart("character",-1);
  pos++;
 }
 currentRange.select();
 return pos;
}
function setCursorPos(obj,pos)
{
  var rng =obj.createTextRange();
  rng.moveStart('character',pos);
  rng.collapse(true);
  rng.select();
}
</script>

解决方案 »

  1.   

    要使用textRange来进行判断光标的位置,用onkeydown来判断event.keyCode的数值是左还是右。
      

  2.   

    控制上下箭头使光标移动(收藏品):<html>
    <head>
    <title>Untitled Document</title>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    <script language="javascript">
    var cols=3;
    var obj;
    var CanMove=false;
    var key;
    function setobj(input){
    obj=input;
    }function init(){
    document.onkeydown=keyDown;
    document.onkeyup=keyUp;
    }function keyDown(DnEvents){
    var key=window.event.keyCode;
    if(key==116){
    window.event.keyCode=0;
    return false;
    }
    if(key==8){
    if(event.srcElement.tagName!="INPUT"){
    event.cancelBubble = true;
    event.returnValue = false;
    return false;
    }
    }
    var IsCtrl=window.event.ctrlKey;
    if(!IsCtrl){
    return;
    }
    for(var i=0;i<document.forms[0].elements.length;i++){
    if(document.forms[0].elements[i]==obj){
    if (key == 37){//←
    if(i>0){
    document.forms[0].elements[i-1].focus();
    }
    }
    if (key == 38){//↑
    if(i>cols-1){
    document.forms[0].elements[i-cols].focus();
    }
    }
    if (key == 39){//→
    if(i<document.forms[0].elements.length-1){
    document.forms[0].elements[i+1].focus();
    }
    }
    if (key == 40){//↓
    if(i<document.forms[0].elements.length-cols){
    document.forms[0].elements[i+cols].focus();
    }
    }
    }
    }}function keyUp(UpEvents){
    return false;
    }
    </script>
    </head><body bgcolor="#FFFFFF" text="#000000" onload="init()">
    <form>
    <table border="0" cellspacing="0" cellpadding="0" align="center">
      <tr>
        <td>
          <input type="text" name="textfield" onfocus="setobj(this)">
        </td>
        <td>
          <input type="text" name="textfield2" onfocus="setobj(this)">
        </td>
        <td>
          <input type="text" name="textfield3" onfocus="setobj(this)">
        </td>
      </tr>
      <tr>
        <td> 
          <input type="text" name="textfield5" onfocus="setobj(this)">
        </td>
        <td> 
          <input type="text" name="textfield6" onfocus="setobj(this)">
        </td>
        <td> 
          <input type="text" name="textfield7" onfocus="setobj(this)">
        </td>
      </tr>
    </table>
    </form>
    用Ctrl+方向键可以方便的在控件中移动,你也可以自己改成不要Ctrl的。
    </body>
    </html>
      

  3.   

    多谢各位,我自己已经解决了,洗澡的时候想出来了,呵呵,各位的方法我收藏先!
    to meizz(梅花雨) :其实我有判断光标位置的方法,但是结合左右方向键时就不太好用,所以我将左右键的event屏蔽,自己写了一个移动光标的方法代替本身的事件响应,就ok了。再次感谢大家,给分先!