我的页面上有两个gridview控件,其中gridview2在页面第一次加载时是不显示的,要在用户输入一些信息,点击button后才能绑定并显示数据,并且该gridview的<ItemTemplate>全都是使用TextBox绑定的。现在为了可以通过方向键在这些textbox之间跳格,我参考网上的,写了以下javascript代码:
var inputarray=document.getElementById('<%=GridView2.ClientID %>').getElementsByTagName('input');
for(var i=0;i<inputarray.length;i++)
{
inputarray[i].onkeydown=preFocus(i);
}
function setFocus(d,obj)
{
var r=obj.createTextRange();
r.moveStart('character',d);
r.collapse(true);
r.select();
}
function preFocus(d)
{
return function()
{
var iekey=event.keyCode; //获取按下键的对应数字
if(iekey==38||iekey==40) //如果是向上或者向下
{
var a=d+(iekey-39)*10;
if(a>=0&&a<inputarray.length)
{
inputarray[a].focus();
}
}
if(iekey==37)
{
var slt=document.selection.createRange();
slt.setEndPoint("StartToStart",inputarray[d].createTextRange());
var s=slt.text.length;
var a=(inputarray.length+d-1)%inputarray.length;
inputarray[a].focus();
setFocus(inputarray[a].value.length,inputarray[a]);
return false;
}
if(iekey==39||iekey==inputarray[d].value.length)
{
var a=(d+1)%inputarray.length;
inputarray[a].focus();
setFocus(0,inputarray[a]);
return false;
}
}
}
现在的问题是:当页面第一次加载的时候,会提示 var inputarray=document.getElementById('<%=GridView2.ClientID %>').getElementsByTagName('input'); 这句有错误,这原因很明显我知道。但我不熟悉javascript,不知道该如何解决,期待高手指点
var inputarray=document.getElementById('<%=GridView2.ClientID %>').getElementsByTagName('input');
for(var i=0;i<inputarray.length;i++)
{
inputarray[i].onkeydown=preFocus(i);
}
function setFocus(d,obj)
{
var r=obj.createTextRange();
r.moveStart('character',d);
r.collapse(true);
r.select();
}
function preFocus(d)
{
return function()
{
var iekey=event.keyCode; //获取按下键的对应数字
if(iekey==38||iekey==40) //如果是向上或者向下
{
var a=d+(iekey-39)*10;
if(a>=0&&a<inputarray.length)
{
inputarray[a].focus();
}
}
if(iekey==37)
{
var slt=document.selection.createRange();
slt.setEndPoint("StartToStart",inputarray[d].createTextRange());
var s=slt.text.length;
var a=(inputarray.length+d-1)%inputarray.length;
inputarray[a].focus();
setFocus(inputarray[a].value.length,inputarray[a]);
return false;
}
if(iekey==39||iekey==inputarray[d].value.length)
{
var a=(d+1)%inputarray.length;
inputarray[a].focus();
setFocus(0,inputarray[a]);
return false;
}
}
}
现在的问题是:当页面第一次加载的时候,会提示 var inputarray=document.getElementById('<%=GridView2.ClientID %>').getElementsByTagName('input'); 这句有错误,这原因很明显我知道。但我不熟悉javascript,不知道该如何解决,期待高手指点
解决方案 »
- highcharts 做成的图,图例问题
- 出个一个简单的正则问题
- 关于js,网页加载特效
- JavaScript的replace方法与正则表达式如何结合应用
- b.htm为a.htm的弹出页面,b又没有方法读区a.htm中的js变量。
- 一个页面上有多个iframe,请问如何让鼠标的滚动条一直聚焦在某个iframe上?
- ====挑战性问题:怎样使用JavaScript将一块HTML文本超出部分截除?====
- 多行输入,但是怎么判断用户用户一行记录已输入完整,急啊,急啊
- 如何获得textarea里鼠标选中的文字??急!!!在线等!!!解决后立即给分
- requirejs ui.router . 的问题
- 验证图片格式、大小的问题
- 一段关于IE和FF的js兼容问题
var inputarray= null;
if(document.getElementById(' <%=GridView2.ClientID %>'))
inputarray=document.getElementById(' <%=GridView2.ClientID %>').getElementsByTagName('input');