100分求解——键盘控制文本框焦点和动态删除表行的问题

roycbl 2010-02-04 12:07:35
困扰了好久了,通过键盘上下键控制文本框焦点的转移,同时我用removeNode实现删除表行,现在得问题是:当删除了某一行以后,键盘上下键控制转移就不对了,代码如下,有哪位大侠帮忙看看,不胜感激,100分在线等,谢谢:)
function tbcolor()
{
var NormalColor="#fff";
var AlterColor="#a6c1df";
var HoverColor="#fff";
var SelectColor="#fff";
var AllRows=$("gvUserSearch").getElementsByTagName("tr");
for (i = 1; i < AllRows.length-1; i++) {
AllRows[i].style.background = i % 2 == 0 ? NormalColor : AlterColor;
AllRows [i].childNodes[0].childNodes[1].onclick=function(i){this.parentNode.parentNode.removeNode(true);}
if (HoverColor != "")
{
AllRows[i].onmouseover = function(){ if (!this.selected) this.style.background = HoverColor; }
if (i % 2 == 0) {
AllRows[i].onmouseout = function() { if (!this.selected) this.style.background = NormalColor; }
}
else {
AllRows[i].onmouseout = function() { if (!this.selected) this.style.background = AlterColor; }
}
}
if (SelectColor != "") {
AllRows[i].onclick = function() {
this.style.background = this.style.background == SelectColor ? HoverColor : SelectColor;
this.selected = !this.selected;}
}
}

//键盘方向键控制
var dd=$("gvUserSearch").getElementsByTagName("input");//获取表单对象
for(var i=0;i <dd.length;i++){
dd[i].parentNode.onclick=function (){this.childNodes[0].focus();}
dd[i].onkeydown =four(i);
}//for让每次表单都有键盘按下事件
//键盘按下的函数 d是传过来的是哪个表单
function four(d){
return function(){
var iekey=event.keyCode; //获取你键盘按下的什么键(得到数字)
//如果是上
if(iekey==38){
var a=d+(iekey-39)*19;//设置移动到的位置
//如果位置存在
if(a>=0&&a <dd.length){
dd[a].focus();
dd[a].setAttribute("onfocus" ,"this.select();");
}
}//end if

//如果是下
if(iekey==40){

a=d+19;//设置移动到的位置
//如果位置存在
if(a>=0&&a <dd.length){
dd[a].focus();
dd[a].setAttribute("onfocus" ,"this.select();");
}
}//if
}
} //键盘方向键控制结束

}
...全文
73 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
roycbl 2010-02-04
  • 打赏
  • 举报
回复
多谢2楼大侠,明白了,100分送你:)
roycbl 2010-02-04
  • 打赏
  • 举报
回复
大侠,不行啊,放在removeNode后面的话,页面装载的时候就不能实现键盘控制了?
shan1119 2010-02-04
  • 打赏
  • 举报
回复
after removeNode
run:
var dd=$("gvUserSearch").getElementsByTagName("input");//获取表单对象
for(var i=0;i <dd.length;i++){
dd[i].parentNode.onclick=function (){this.childNodes[0].focus();}
dd[i].onkeydown =four(i);
}
roycbl 2010-02-04
  • 打赏
  • 举报
回复
怎么没有人在吗?

87,907

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧