方向键和回车控制Web页面的输入框焦点
2007-08-26 19:43
507 查看
最近替一个台湾客户做一个BS项目,客户明确要求用方向键、回车控制页面上的输入框的焦点。即要求和Excel上的操作类似。
经过一个晚上的整理,写了几个函数来实现。
本着探讨的目的,大家可以提一些改进的意见:
首先建立一个Public.js文件,包含如下的方法:
var curCtlIndex = 0;
var arrCtl = new Array();
var oldEvent = new Array();
function SetFocusToFirstControl()
...{
var i = 0,j = -1;
for(i=0;i<document.forms[0].elements.length;i++)
...{
if(document.forms[0].elements[i].tagName == 'INPUT' || document.forms[0].elements[i].tagName == 'SELECT' || document.forms[0].elements[i].tagName == 'TEXTAREA')
...{
if(document.forms[0].elements[i].type != 'submit' && document.forms[0].elements[i].type != 'reset' && document.forms[0].elements[i].type != 'hidden' && document.forms[0].elements[i].type != 'button')
...{
if(document.forms[0].elements[i].disabled == 'disabled' || document.forms[0].elements[i].disabled == true)
continue;
if(document.forms[0].elements[i].readOnly)
continue;
if(document.forms[0].elements[i].style.display =="none")
continue;
if(document.forms[0].elements[i].style.width == "0px")
continue;
try
...{
j++;
arrCtl[j] = document.forms[0].elements[i];
arrCtl[j].blur();
}
catch(el)
...{ }
}
document.forms[0].elements[i].onblur = onblur_handler;
document.forms[0].elements[i].onfocus = onfocus_handler;
}
//alert(document.forms[0].elements[i].type + document.forms[0].elements[i].tagName);
}
//alert(arrCtl.length);
for(i=0;i<arrCtl.length;i++)
...{
try
...{
arrCtl[i].focus();
break;
}
catch(el)
...{}
}
}
/**//*
*/
function keyEnter(objSubmit)
...{
var i = 0;
if(event.keyCode == 13) // || event.keyCode == 39 || event.keyCode == 40
...{
for(i=curCtlIndex+1;i<arrCtl.length;i++)
...{
if(curCtlIndex < arrCtl.length - 1)
...{
try
...{
curCtlIndex++;
arrCtl[curCtlIndex].focus();
return false;
//break;
}
catch(el)
...{}
}
else
...{
//break;
}
}
if(objSubmit != undefined && objSubmit != '' )
document.getElementById(objSubmit).click();
return false;
}
else if(event.keyCode == 37) // || event.keyCode == 38
...{
for(i=curCtlIndex-1;i>=0;i--)
...{
try
...{
curCtlIndex--;
arrCtl[curCtlIndex].focus();
break;
}
catch(el)
...{}
}
return false;
}
}
/**//*****************************************************************
****************************************************************/
function onblur_handler()
...{
this.style.backgroundColor="White";
}
function onfocus_handler()
...{
for(i=0;i<arrCtl.length;i++)
...{
if(this.id == '')
...{
if(this.name == arrCtl[i].name)
...{
curCtlIndex = i;
break;
}
}
else
...{
if(this.id == arrCtl[i].id)
...{
curCtlIndex = i;
break;
}
}
}
this.style.backgroundColor="yellow";
return true;
}
aspx页面中加入如下代码:
<script src="../Common/Public.js" type="text/javascript"></script>
<body onkeydown="javascript:return keyEnter('btnSave');">
aspx页面的最下面插入下面代码
<script language="javascript" type="text/javascript">
<!--
SetFocusToFirstControl();
-->
</script>
一切OK :)
经过一个晚上的整理,写了几个函数来实现。
本着探讨的目的,大家可以提一些改进的意见:
首先建立一个Public.js文件,包含如下的方法:
var curCtlIndex = 0;
var arrCtl = new Array();
var oldEvent = new Array();
function SetFocusToFirstControl()
...{
var i = 0,j = -1;
for(i=0;i<document.forms[0].elements.length;i++)
...{
if(document.forms[0].elements[i].tagName == 'INPUT' || document.forms[0].elements[i].tagName == 'SELECT' || document.forms[0].elements[i].tagName == 'TEXTAREA')
...{
if(document.forms[0].elements[i].type != 'submit' && document.forms[0].elements[i].type != 'reset' && document.forms[0].elements[i].type != 'hidden' && document.forms[0].elements[i].type != 'button')
...{
if(document.forms[0].elements[i].disabled == 'disabled' || document.forms[0].elements[i].disabled == true)
continue;
if(document.forms[0].elements[i].readOnly)
continue;
if(document.forms[0].elements[i].style.display =="none")
continue;
if(document.forms[0].elements[i].style.width == "0px")
continue;
try
...{
j++;
arrCtl[j] = document.forms[0].elements[i];
arrCtl[j].blur();
}
catch(el)
...{ }
}
document.forms[0].elements[i].onblur = onblur_handler;
document.forms[0].elements[i].onfocus = onfocus_handler;
}
//alert(document.forms[0].elements[i].type + document.forms[0].elements[i].tagName);
}
//alert(arrCtl.length);
for(i=0;i<arrCtl.length;i++)
...{
try
...{
arrCtl[i].focus();
break;
}
catch(el)
...{}
}
}
/**//*
*/
function keyEnter(objSubmit)
...{
var i = 0;
if(event.keyCode == 13) // || event.keyCode == 39 || event.keyCode == 40
...{
for(i=curCtlIndex+1;i<arrCtl.length;i++)
...{
if(curCtlIndex < arrCtl.length - 1)
...{
try
...{
curCtlIndex++;
arrCtl[curCtlIndex].focus();
return false;
//break;
}
catch(el)
...{}
}
else
...{
//break;
}
}
if(objSubmit != undefined && objSubmit != '' )
document.getElementById(objSubmit).click();
return false;
}
else if(event.keyCode == 37) // || event.keyCode == 38
...{
for(i=curCtlIndex-1;i>=0;i--)
...{
try
...{
curCtlIndex--;
arrCtl[curCtlIndex].focus();
break;
}
catch(el)
...{}
}
return false;
}
}
/**//*****************************************************************
****************************************************************/
function onblur_handler()
...{
this.style.backgroundColor="White";
}
function onfocus_handler()
...{
for(i=0;i<arrCtl.length;i++)
...{
if(this.id == '')
...{
if(this.name == arrCtl[i].name)
...{
curCtlIndex = i;
break;
}
}
else
...{
if(this.id == arrCtl[i].id)
...{
curCtlIndex = i;
break;
}
}
}
this.style.backgroundColor="yellow";
return true;
}
aspx页面中加入如下代码:
<script src="../Common/Public.js" type="text/javascript"></script>
<body onkeydown="javascript:return keyEnter('btnSave');">
aspx页面的最下面插入下面代码
<script language="javascript" type="text/javascript">
<!--
SetFocusToFirstControl();
-->
</script>
一切OK :)
相关文章推荐
- 方向键和回车控制Web页面的输入框焦点
- 解决WEB页面上"焦点控制"一法
- 解决WEB页面上"焦点控制"一法
- 解决WEB页面上"焦点控制"一法
- 类似智能购票的demo--进入页面后默认焦点在第一个输入框,输入内容、回车、right时焦点自动跳到下一个,当跳到select时,下拉选项自动弹出,并且可以按上下键选择,选择完成后再跳到下一个。
- 解决WEB页面上"焦点控制"一法
- 解决WEB页面上"焦点控制"一法
- 转:解决WEB页面上"焦点控制"一法
- 解决WEB页面上"焦点控制"一法
- 关于页面按回车提交的控制/输入框回车发送消息与输入法冲突
- 解决WEB页面上"焦点控制"一法
- 解决WEB页面上"焦点控制"一法
- 解决WEB页面上"焦点控制"一法
- web页面增加:Enter回车键按钮,ESC重置按钮,文本框默认获取焦点
- c# asp.net webform web页面打印,可以控制需要打印和不需要打印的位置
- 在ASP.NET登录页面中如何实现文本框焦点自动跳转及通过回车键提交表单
- asp.net页面获得回车键焦点的问题
- 手机页面输入框获取焦点
- jQuery执 4000 行完一个输入框的回车事件代码之后,会自动刷新页面解决办法
- 如何用代码控制以不同屏幕方向打开新页面【iOS】