【参加讨论】<script language="javascript">
<!--
// 用途:enter 转化成tab
//使用:onload ="initenter2tab()" form标记加上 <form name="frm" type="enter2tab">...</form>
var iscycle = false; //当光标到最后一个元素的时候,是否循环光标焦点,
var icurrent = -1;
var frmname = "0"//input_form
//
function entertotab() //网页里按回车时焦点的转移
{
var e = document.activeelement;
if(e == null) return false;
//获得当前表单的名字
for(i=0;i<document.forms.length;i++){
for(var el in document.forms[i].elements){
if(e.uniqueid == el.uniqueid){
frmname = document.forms[i].name
}
}
}
if(window.event.keycode == 13)
{
switch(e.tagname)//标签类型
{
case "input":
handleinput(e)
break;
case "select":
handleselect(e)
break;
case "textarea":
handletextarea(e)
break;
default:
//window.status = "未知的标签名称:"+e.tagname+",不能移动焦点!"
}
}// end if
}
//处理input 标签类型
function handleinput(e)
{
switch(e.type)
{
case "text":
case "password":
case "checkbox":
case "radio":
case "file":
movefocustonextelement(e)
break;
case "submit"://处理有提交按钮的情况
case "button":
if(ishandlesubmit(e)){
handlesubmit(e)
focusonnextelement(document.forms[frmname].elements,icurrent-1)
break;
}
movefocustonextelement(e)
break;
default:
}
}
//处理select 标签类型
function handleselect(e)
{
movefocustonextelement(e)
}
//处理textarea 标签类型
function handletextarea(e)
{
movefocustonextelement(e)
}
//移动到下一个元素
function movefocustonextelement(e)
{
var oe = document.forms[frmname].elements, icurentpos=-1;
for(var i=0; i<oe.length; i++)
{
if(oe[i] == e) icurentpos = i;
if(icurentpos>-1 && icurentpos+1<oe.length)
{
//把焦点设置到下一个可用的元素上
focusonnextelement(oe,icurentpos)
}
}
}
//下一个可用元素得到焦点 n 元素的位置
function focusonnextelement(oelements,iindex)
{
var oe = oelements
var oldindex = iindex
while(oe[iindex+1].type =="hidden" || oe[iindex+1].disabled || oe[iindex+1].readonly == true || oe[iindex+1].style.display == "none")
{
/*
window.status += "e.name = "+oe[iindex+1].name
window.status += ";e.type = "+oe[iindex+1].type
window.status += ";e.disabled = "+oe[iindex+1].disabled
window.status += ";e.readonly = "+oe[iindex+1].readonly+"."
*/
iindex++;
if(iindex+1 == oe.length)
{
if(iscycle){//设置焦点在第一元素
focusonnextelement(oe,-1)
}
return;
}
}//end while
icurrent = iindex+1
oe[icurrent].focus();
window.event.keycode = 0;
window.event.returnvalue= false;
return;
}
//处理当前元素
function handlesubmit(element)
{
element.click()
return;
}
//判断是否处理提交
function ishandlesubmit(element)
{
var ret = false;
if(element !=null && (element.id.touppercase() == "submit" || element.name.touppercase() == "submit" || element.issubmit)){
ret = true;
}
return ret;
}
//初始化 initenter2tab()
function initenter2tab()
{
for(i=0;i<document.forms.length;i++){
if(document.forms[i].type !=null && document.forms[i].type == "enter2tab"){
document.forms[i].onkeydown = function f(){entertotab();};
}
}
//文档初始化焦点
if(document.forms[0].elements != null)
focusonnextelement(document.forms[0].elements,-1)
}
//-->
</script>
<body onload="initenter2tab()">
<form method=post action="" type="enter2tab" name="aa">
<input type="text" name=""><input type="text" name=""><input type="submit">
</form>