方向键的控制(多单元格之间的移动)

onfocus="focusThis(this.id,this)"



<script type="text/javascript">

//input中根据单元格行列进行定位
function keyMove(trSeq,tdSeq){
var rows; //table的所有tr元素
rows=document.getElementById("tab1").rows;//根据table的id获取
for(var i=0;i<rows.length;i++){//行循环
for(var j=0;j<rows[i].cells.length;j++){//列循环
if((String(trSeq)==i) && (String(tdSeq)==j)){//判断目标单元格的行列是否在范围内
for(var z = 0; z < rows[trSeq].cells[tdSeq].childNodes.length; z++){
if(rows[trSeq].cells[tdSeq].childNodes.item(z).nodeName== "INPUT"){//目标是否是input类型
nextId = rows[trSeq].cells[tdSeq].childNodes.item(z).id;//获取id
$("#"+nextId).focus();//定位光标
//控制input框内光标位置
var e =document.getElementById(nextId);
var r =e.createTextRange();
//alert("length:"+$("#"+nextId).val().length+" val:"+$("#"+nextId).val());
r.moveStart('character',$("#"+nextId).val().length);
r.collapse(true);
r.select();
break;
}
}
  }
   }
}
}
//input中的方向键事件(根据单元格行列进行定位)
        function focusThis(id,obj){
        var keycode; //事件code码
        var trSeq=0; //当前行数
     var tdSeq=0; //当前列数
     var nextId; //目标对象的id
     var rows; //table的所有tr元素
    
            document.onkeydown = keyDown;//除发方向键事件
function keyDown(){

keycode = event.which||event.keyCode;
trSeq=obj.parentNode.parentNode.rowIndex;
            tdSeq=obj.parentNode.cellIndex;
rows=document.getElementById("tab1").rows;//根据table的id获取

switch(keycode){
case 38: //上 
trSeq = trSeq-1;//行号减一
keyMove(trSeq,tdSeq);
                 break; 
             case 40: //下 
            trSeq = trSeq+1;//行号加一
            keyMove(trSeq,tdSeq);
                 break; 
             case 37: //左
            tdSeq = tdSeq-1;//列号减一
            keyMove(trSeq,tdSeq);
                 break; 
             case 39: //右
            tdSeq = tdSeq+1;//列号加一
            keyMove(trSeq,tdSeq);
                 break; 
              default: 
                 return; 
}

}
        }   
</script>

猜你喜欢

转载自helyhu.iteye.com/blog/1593586
今日推荐