刷新后控制TAB键到下一个控件

时间:2010-03-09 11:59:27  来源:第二电脑网  作者:第二电脑网

  第二电脑网导读:ontrol = this.FindControl(Request.Form["__EVENTTARGET"]);//"_EVENTTARGET"记录了上次引发postback事件的控件ID。 接着我自然会想到找到该控件的下一个控件,然后focus(),通过Page.Controls是可以找到,但是我认为这可能无法避免hardCode,因为在服务器段不好判断一个Control是否可以focus().    找了一些资料,我从 document.onkeydown = new F...
  正文:页面上的控件能一直TAB下去,这是系统的一个很基础的要求。在网上没有搜索到相关的方法。我觉得一般做法都是使页面无刷新,但是如果遇到页面不得不刷新的情况,如何去控制呢?
   思路是很简单的,首先是获取引起postback的控件, Control ocontrol = this.FindControl(Request.Form["__EVENTTARGET"]);//"_EVENTTARGET"记录了上次引发postback事件的控件ID。 接着我自然会想到找到该控件的下一个控件,然后focus(),通过Page.Controls是可以找到,但是我认为这可能无法避免hardCode,因为在服务器段不好判断一个Control是否可以focus().
   找了一些资料,我从 document.onkeydown = new Function("if(event.keyCode==13){event.keyCode=9;} "); 得到启发,我想,我让引发PostBack的控件获得焦点,然后引发一个tab键的事件,焦点自然会移到下一个控件,于是我经过一番折腾,得到了一个结论,这是不行的,为什么不行,我也不知道。测试代码如下:
   <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.ASP/ target=_blank class=infotextkey>aspx.cs" Inherits="_Default" %>
  
  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  <html xmlns="http://www.w3.org/1999/xhtml">
  <head id="Head1" runat="server">
   <title>Untitled Page</title>
  
   <script>
   function ControlFocus(){
   var Ka=document.createEventObject();
   Ka.ctrlKey=false;
   Ka.keyCode=9;
   document.fireEvent("onkeydown",Ka);
   }
   document.onkeydown = new Function("if(event.keyCode==9){alert('Tab');} ");
   //该事件仅是测试时使用
   </script>
  
  </head>
  <body>
   <form id="form1" runat="server">
   <div>
   <input type="text" id="test" style="color: Red; border: 0;" onblur="ControlFocus();" />
   <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
   <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
   <asp:TextBox ID="TextBox3" runat="server"></asp:TextBox>
   <asp:TextBox ID="TextBox4" runat="server"></asp:TextBox>
   <asp:TextBox ID="TextBox5" runat="server"></asp:TextBox></div>
   </form>
  
  </body>
  </html>
   按我的想法,当test失去焦点的时候引发事件调用ControlFocus()函数,然后引发一个Tab键,结果Tab键是引发了(测试时能弹出'Tab'),但是焦点却没有转移到下一个控件。查了很多资料也得不到解释,我想既然能通过enter键转化为tab键控制焦点,那么我编程引发tab键应该有同样的效果,结果却不是,网上也不到有关的解释,有高手知道希望解释一下.
  
   没办法,只能通过在服务器端找到下一个控件的办法来实现,虽然没多高的技术含量,还是发出来给大家看一下: //这里是配置文件写的可focus的控件,因为有使用第三方控件
   string FocusAbleControlList = System.Configuration.ConfigurationSettings.Apphotoshop/ target=_blank class=infotextkey>psettings["AbleFocusControlList"];
  
   private bool isFocusAble(string ControlType)
   {
   if (FocusAbleControlList.IndexOf("," + ControlType + ",") < 0)
   {
   return false;
   }
   else
   {
   return true;
   }
   }
  
刷新后控制TAB键到下一个控件》由第二电脑网原创提供,转载请注明:http://www.002pc.com/master/College/Programming/aspnet/13145.html


关键字:

关于《刷新后控制TAB键到下一个控件》文章的评论

站内搜索: 高级搜索

热门搜索: Windows style 系统 tr IP QQ CPU 安装 function 注册 if td