方向键和回车控制Web页面的输入框焦点
来源:互联网 发布:js 和风天气 编辑:程序博客网 时间:2024/06/11 09:51
最近替一个台湾客户做一个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;
}
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>
<!--
SetFocusToFirstControl();
-->
</script>
一切OK :)
- 方向键和回车控制Web页面的输入框焦点
- 方向键和回车控制Web页面的输入框焦点
- 关于页面按回车提交的控制/输入框回车发送消息与输入法冲突
- 网站页面回车和鼠标焦点
- C#中 取消方向键对控件焦点的控制
- 页面里回车到下一控件的焦点
- 使用方向键控制table中文本框焦点
- Jquery通过方向键(左上右下) 来控制表格内输入框的自由移动
- Tab键、方向键切换页面控件焦点
- <requestFocus /> 登录页面的输入框焦点取消方法
- 输入框获得焦点和失去焦点
- C# 中调用方向键和回车
- 如何控制页面的位置与焦点
- Js实现类似Excel工作表用方向键切换输入框焦点
- 手机页面输入框获取焦点
- 输入框获取焦点,页面放大解决方法
- 输入框的获取焦点、失去焦点
- 解决WEB页面上"焦点控制"一法 tintown [原作]
- 技术资料收藏
- 程序员的处世哲学:好酒不怕巷子深
- 使用VBA.NET压缩备份C#工程
- 武林CALL地址全集(8月23日120版已全部更新)
- 软件开发,代码是核心
- 方向键和回车控制Web页面的输入框焦点
- 从自命不凡到只知皮毛
- BCC55 ALL IN ONE
- 乔布斯的三个故事
- 武林外传自动寻路CALL
- 武林(117版)发言Call(VC版)
- 计算机基础知识
- 计算机应用基础模拟试卷
- Windows Mobile远程控制软件Pocket Controller Pro简介