现在我改变一个文本框的内容,poskback后,我要让这个文本框的下一个控件(文本框、下拉列表等)
获取焦点,(比如是文本框,则让光标放到这个文本框里去),怎么做?
我现在通过获取Request["__EVENTTARGET"]获取这个引发事件的文本框id,然后在body 的load事件里通过id找到这个文本框,能让它获取光标,但我怎么样让它下一个控件获取光标,即就象没有发生postback,下移到下面的控件上一样?谢谢指教!!
获取焦点,(比如是文本框,则让光标放到这个文本框里去),怎么做?
我现在通过获取Request["__EVENTTARGET"]获取这个引发事件的文本框id,然后在body 的load事件里通过id找到这个文本框,能让它获取光标,但我怎么样让它下一个控件获取光标,即就象没有发生postback,下移到下面的控件上一样?谢谢指教!!
解决方案 »
- 怎么将网页上指定区域的内容生成图片?
- 在发数据显示问题。马上结帐,
- 关于XP上不能运行asp.net问题.
- <%# 简单的字符串提取函数。。我忘了 c:/abc/index.aspx 提取出index.aspx
- 使用OleDbDataReader对象读取Access数据库数据出现的网页错误
- 邦定星期的问题,估计是没多少人知道!!!高手才可以进!!!在线等
- Response.AddHeader 具体起什么做用,它影响Javascript写的脚本吗
- 什么地方出了问题?(解决或出主意的都给分)
- 邮件头与正文及附件之间是如何分隔的?
- [Solved]获取listview中InsertItemTemplate中textbox值
- 我想学ASP.NET,各位给推荐一本书
- 我的报表计算时间比较长..有没有办法可以显示一个"计算中..."这样的DIV的?
string Script = "<script language=javascript>document.all('"+obj+"').focus();</script>";
this.RegisterStartupScript(obj, Script); 可以聚焦到DropDownList2 .
/// 设置焦点
/// </summary>
/// <param name="page">当前页</param>
/// <param name="strCtrlID">设置焦点控件ID</param>
public static void SetFocus(System.Web.UI.Page page,string strCtrlID)
{
page.RegisterStartupScript("focus","<script language=\"javascript\">document.getElementById('" + strCtrlID + "').focus();</script>");
}
我是要下一个控件获取焦点,但我不知道下一个控件的id是多少,
就是说我要在把表单提交一次后,获取引发提交的控件的下一个控件的焦点,
比如按tab键,如果没有提交表单,则光标会转到下一个控件,但因为这里提交了表单,所以就不行了
,我做到了能让发生提交表单的控件在提交表单之后能获取光标,即在body的load事件中加入“document.getElementById('" + strCtrlID + "').focus。但我现在要它的下一个控件获取光标,就象没有提交表单一样,我用window.event.keyCode=9来实现,但因为在load里还没有实际的srcelement对象,所以根本不起作用,不知道对js熟悉的人还有没有其他办法?如能赐教,感激不尽!!
要想获取引发提交的控件的下一个控件也是很容易的
假设引发控件的ID为obj
则当此控件不是tr中的最后一个td时
获得当前控件下一个控件JS如下:
var nextobj=obj.parentNode.nextSibling
当此控件是tr中的最后一个td时,如果此时还存在下一行tr
获得当前控件下一个控件JS如下:
var nextrow=obj.parentNode.parentNode.nextSibling;
var nextobj=nextrow.firstChild.firstChild;
{
var obj = document.getElementById(id);
if(obj != null)
{
//先查本td里的下一个控件
var obj1 = GetNextInput(obj.nextSibling);
if(obj1 != null)
{
obj1.focus();
return;
}
//如果不存在,则查在临近td(单元格级别)里的下一个控件
obj1 = GetTdInput(obj.parentNode.nextSibling);
if(obj1 != null)
{
obj1.focus();
return;
}
//如果还不存在,则查行级别里的下一个控件
obj1 = GetTrInput(obj.parentNode.parentNode.nextSibling);
if(obj1 != null)
{
obj1.focus();
return;
}
//如果不存在,则查table级别里的控件(其他table)
obj1 = GetTabInput(obj.parentNode.parentNode.parentNode.nextSibling);
if(obj1 != null)
{
obj1.focus();
}
}
}
//获取table级别里的控件
function GetTabInput(tab)
{
if(tab == null ) return null;
var tr = tab.firstChild;
if(tr == null)
{
return null;
}
else
{
//是否存在该tab的行里
var obj = GetTrInput(tr);
//如果在这个tab里没有找到,则查下一个tab
if(obj == null)
{
tab = tab.nextSibling;
}
if( obj== null && tab != null)
{
return GetTabInput(tab);
}
else
{
return obj;
}
}
}
//行级别里的查找,原理跟tab里查找一样
function GetTrInput(tr)
{
if(tr == null ) return null;
var td = tr.firstChild;
if(td == null)
{
return null;
}
else
{
var obj = GetTdInput(td);
if(obj == null)
tr = tr.nextSibling;
if(obj == null && tr != null)
{
return GetTrInput(tr);
}
else
{
return obj;
}
}
} //td级别里的查找
function GetTdInput(td)
{
if(td == null ) return null;
var obj = td.firstChild;
//如果当前td里没有控件,则查找下一个td
if(obj == null)
{
obj = td.nextSibling;
if(obj != null)
{
return GetTdInput(obj);
}
else
{
return obj;
}
}
//如果找到了,则返回这个控件
if(obj.tagName.toLowerCase() == "input" && obj.type.toLowerCase() != "hidden")
{
return obj;
}
//如果是个表格,则查找这个表格
else if(obj.tagName.toLowerCase() == "table")
{
return GetTabInput(obj);
}
//否则查找下一个控件
else
{
return GetNextInput(obj);
}
} //控件级别里的查找
function GetNextInput(obj)
{
if(obj == null )
{
return obj;
}
//如果找到则返回
else if(obj.tagName.toLowerCase() == "input" && obj.type.toLowerCase() != "hidden")
{
return obj;
}
//如果当前控件有子项,则查找子项
else if(obj.firstChild != null)
{
return GetNextInput(obj.firstChild);
}
//如果它有下一个控件,则查找下一个控件
else if(obj.nextSibling != null)
{
return GetNextInput(obj.nextSibling);
}
else
{
//否则获取它的父控件的下一个控件
obj = obj.parentNode.nextSibling;
if(obj != null)
{
return GetNextInput(obj);
}
else
{
return null;;
}
}
}这个问题,本人已经解决了,呵呵,但有一定局限性,不是所有的都能适用