如何在页面中达到回车和按TAB一样的效果?

Tyro 2000-08-22 08:16:00
不知道下一个tabindex的东西到底是什么,只想让按回车后达到和按tab键一样的效果
谢谢各位!
...全文
387 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
deanjiang 2000-08-25
  • 打赏
  • 举报
回复
不很明白你的意思,你不是某仿tab键吗?
不过要回到第一个可以用下面的代码。不过就像tab键在回到第一个元素之前,会在菜单中云游一会一样,这个代码只是在适当的时候将焦点设回windows对象,即初始状态。
在body的onkeydown中也设上nexttab()的调用,使得在一次回车是第一个元素将得到焦点;
总共要两次回车。将下面的替换上一次的即可试验:
另外如果你的第一个元素有特殊性质的话(不然自动回去有什么意义?)可以将★★★★★★★标出的语句换成在all中按sourceIndex和你的特性一起搜索,就可以找到第一个你要的元素,然后focus(); 不过我认为这种功能意义不大。

<FORM action="" method=POST id=form1 name=form1>
<INPUT type="text" id=text1 name=text1 onkeydown="nexttab()">
<INPUT type="text" id=text2 name=text2 onkeydown="nexttab()" >
<SCRIPT LANGUAGE=javascript>
<!--
window.document.onkeydown=nexttab;
var timer=new Array;
function nexttab()
{
if(event.keyCode==13)
event.keyCode=9;
timer[timer.length]=window.setInterval("testtab();",10);
}
function testtab()
{
for (var n in timer)
{
window.clearInterval(timer[n]);
delete timer[n];
}
if(typeof document.activeElement.id=="undefined")
window.focus();//★★★★★★★
}
//-->
</SCRIPT>
</FORM>
huntout 2000-08-25
  • 打赏
  • 举报
回复
to deanjiang:
你的程序想法很好,但是請問移到最後一個後,怎麼到第一個?︰)
huntout 2000-08-24
  • 打赏
  • 举报
回复
function goNext() {
if (window.event.keyCode != 13) {
return;
}
with (document.form1) {
var n = aNext[window.event.srcElement.sourceIndex - item(0).sourceIndex];
for (var i=0; i<aNext.length; i++) {
try {
item(n).focus();
break;
}
catch(e) {
//alert("Outer catch caught " + e);
n = aNext[n];
}
}
}
}
deanjiang 2000-08-24
  • 打赏
  • 举报
回复
怎么样我的程序简单吧,一切都交给浏览器处理,复杂的地方由微软做。
给分吧,这一字可是值千金呀:):):)
deanjiang 2000-08-24
  • 打赏
  • 举报
回复
这好做的很!把下面这个函数作为onkeydown 的事件处理即可
function nexttab()
{
if(event.keyCode=13)
event.keyCode=9;
}
思路吗,就是把回车事件变成tab事件。像要谁有这个功能,只用把那个对象的onkeydown一设就行了。不过在Netscape下好像实现不了类似的功能,修改Event.which不起作用。
把下面的代码靠到你的form中使一使吧。
<INPUT type="text" id=text1 name=text1 onkeydown="nexttab()">
<INPUT type="text" id=text2 name=text2 onkeydown="nexttab()">
<SCRIPT LANGUAGE=javascript>
<!--

function nexttab()
{
if(event.keyCode==13)
event.keyCode=9;
}
//-->
</SCRIPT>
huntout 2000-08-23
  • 打赏
  • 举报
回复
參考一下︰)

<html>
<form name=form1>
<input value=1 tabindex=1><input value=3 tabindex=3><input value=2 tabindex=2>
</form>
<script language=javascript>
var aNext;

function createArray() {
with (document.form1) {
var aTab = new Array(length);
for (var i=0; i<length; i++) {
aTab[i] = item(i).tabIndex + ":" + i;
}
}
aTab.sort();
aNext = new Array(aTab.length);
for (var i=0; i<aTab.length; i++) {
var i1 = parseInt(aTab[i].split(":")[1]);
var i2 = parseInt(aTab[(i + 1) % aTab.length].split(":")[1]);
aNext[i1] = i2;
}
}

function goNext() {
if (window.event.keyCode != 13) {
return;
}
with (document.form1) {
item(aNext[window.event.srcElement.sourceIndex - item(0).sourceIndex]).focus();
}
}

window.onload = createArray;
with (document.form1) {
for(var i=0; i<length; i++) {
item(i).onkeypress = goNext;
}
}
</script>
</html>
Michaelyfj 2000-08-23
  • 打赏
  • 举报
回复
建议你用Java自己写一个吧
huntout 2000-08-23
  • 打赏
  • 举报
回复
用catch試試!︰)
Tyro 2000-08-23
  • 打赏
  • 举报
回复
huntout:
不能接受焦点的情况好多呀,除了display,还有disabled,还有<input type="hidden">也不行
是否还有别的情况不好说,这样判断下去好累呀:)
dandycheung 2000-08-23
  • 打赏
  • 举报
回复
可用javascript处理一下KeyDown事件并结合Focus一试。
huntout 2000-08-23
  • 打赏
  • 举报
回复
我說了是參考嘛,主要是給出實現思想︰)

1、若元素動態生成,則把數組生成的代碼移到goNext()中好了!我這樣做是為了速度快一些,不過在客戶端速度不是問題喔!︰)
2、在goNext中加一些判斷
function goNext() {
if (window.event.keyCode != 13) {
return;
}
with (document.form1) {
var n = aNext[window.event.srcElement.sourceIndex - item(0).sourceIndex];
for (var i=0; i<aNext.length; i++) {
if (item(n).style.display != "none") {
item(n).focus();
break;
}
n = aNext[n];
}
}
}

Tyro 2000-08-23
  • 打赏
  • 举报
回复
huntout:
你的方法可以达到一定的效果,但是还不能解决我的问题
你的数组是在onload时生成的,但是我页面中的元素可能是动态产生的
另外页面中的元素在某个时候可能是不可见的,这个方法在移动焦点到不可见的元素时会产生错误

28,390

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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