javascript 跳过控件

微工程 2012-03-15 07:35:14
页面上有textbox1,textbox2,textbox3,textbox4,textbox5 ......... 多个textbox控件

javascript代码实现回车跳格:

if (event.keyCode == 13) {
event.keyCode = 9;
}

现在是按一次回车,焦点从textbox1,textbox2,跳一个格。

如何实现按一次回车,跳两个格,比如:从textbox1直接跳textbox3 ?
...全文
105 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
微工程 2012-03-15
  • 打赏
  • 举报
回复
dalmeeme,多谢你的热心,结贴了
微工程 2012-03-15
  • 打赏
  • 举报
回复
dalmeeme ,虽然你的方法还没摆脱需要设定信息(比如数组),就不能移植通用,但比sp1234的思路要好上很多!

这个问题我元素索引的方法得到了解决。
这是核心代码:

            if (event.srcElement.getAttribute("ReadOnly") == true) {
var k = currentindex(current, obj);
obj(k + 1).focus();
}


dalmeeme 2012-03-15
  • 打赏
  • 举报
回复
用getElementByTagName方法,得到一个数组,获取某父元素下所有的input,根据type属性和只读属性过滤掉只读的和非textbox的元素,剩下就是非只读的textbox了。然后for循环,先找到焦点所在的那个textbox,根据数组下标不难取到需要focus的那个textbox。

这个方法跟id无关,应该比较通用。
微工程 2012-03-15
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 sp1234 的回复:]
真正聪明的程序员设计框架,以后再有改动时只要去修改声明部分就行了;小聪明的程序只看眼前,以后再有改动时要再去混乱地重写源代码。

其实顺序关系很简单,你可以创建一个数组,里边的值记录了各个控件,例如 txt1、txt3、txt5、....、txt2、txt4....等,这就行了。当你需要修改回车键跳转控制次序,修改一下这个数组的值就行了。
[/Quote]

你的意思我明白,现在的想法是找到一个通用的方法,在一个页面上不需要考虑id,也不必用getElementById函数。
现在需要只要碰到只读的就跳过,不需要考虑更多。
不管大小聪明,感觉你也没有跳过getElementById函数,没做到通用,觉得你属于小聪明,或者不聪明!
  • 打赏
  • 举报
回复
真正聪明的程序员设计框架,以后再有改动时只要去修改声明部分就行了;小聪明的程序只看眼前,以后再有改动时要再去混乱地重写源代码。

其实顺序关系很简单,你可以创建一个数组,里边的值记录了各个控件,例如 txt1、txt3、txt5、....、txt2、txt4....等,这就行了。当你需要修改回车键跳转控制次序,修改一下这个数组的值就行了。
微工程 2012-03-15
  • 打赏
  • 举报
回复
现在textbox有不确定性,id也不是顺序关系
dalmeeme 2012-03-15
  • 打赏
  • 举报
回复
比如当前焦点所在的是textbox1,获取它后得到下一个是textbox2(拼id),先判断一下是否只读,如不是只读,focus(),然后break出循环就行了;如是只读,在textbox2的基础上拼id得到textbox3,再继续判断……。
while(true)
{
//判断
}
微工程 2012-03-15
  • 打赏
  • 举报
回复
链接看了,下一个有不确定性啊,怎么focus呢?
实质的情况是这样的
页面上有100个textbox,用回车已经实现了跳格,现在是在跳格的时候,碰到只读的textbox后,怎么跳过这个只读的textbox,直接到下一个textbox?
dalmeeme 2012-03-15
  • 打赏
  • 举报
回复
看我贴给你的那个链接啊,获取到焦点原先所在的textbox后,取出id,在这基础上修改一下,得到下一个textbox的id,然后focus()。
微工程 2012-03-15
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 dalmeeme 的回复:]
http://topic.csdn.net/u/20080831/16/1b043193-711e-4bdb-b31b-8edb6ce3aa65.html
获取焦点所在textbox,应该就能做了。
[/Quote]

获取可以的,获取后,怎样让焦点直接跳到下一个?
我这里函数写过了,但没法跳到下一个。

function getfocus() {
if (event.srcElement.getAttribute("ReadOnly") == true) {
event.keyCode == 13;
//alert('d');
}
}


这段代码的意思就是判断textbox的属性,如果只读,就跳到下一个textbox
dalmeeme 2012-03-15
  • 打赏
  • 举报
回复
微工程 2012-03-15
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 dalmeeme 的回复:]
document.getElementById("textbox3").focus();//给textbox3设置焦点

其中的 3 可以通过textbox1的id取子串得到1后加上2获得,这样就有规律了。
[/Quote]

通过getElementById是可以得到的,这知道的。不用getElementById有实现方法吗?
因为现在的情况是textbox有很多个,对象有不确定性
所以,用 event.keyCode = 9 实现的
dalmeeme 2012-03-15
  • 打赏
  • 举报
回复
document.getElementById("textbox3").focus();//给textbox3设置焦点

其中的 3 可以通过textbox1的id取子串得到1后加上2获得,这样就有规律了。

62,047

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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