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

οnfοcus="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>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值