日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2025/3/14 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 刷新后控制TAB键到下一个控件 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
頁面上的控件能一直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.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.AppSettings["AbleFocusControlList"];

????????
private?bool?isFocusAble(string?ControlType)
????????{
????????????
if?(FocusAbleControlList.IndexOf(","?+?ControlType?+?",")?<?0)
????????????{
????????????????
return?false;
????????????}
????????????
else
????????????{
????????????????
return?true;
????????????}
????????}

????????
protected?override?void?OnLoad(EventArgs?e)
????????{
????????????
base.OnLoad(e);
????????????
if?(Request.Form["__EVENTTARGET"]?!=?null)
????????????{
????????????????Control?ocontrol?
=?this.FindControl(Request.Form["__EVENTTARGET"]);
????????????????
if?(ocontrol?!=?null)
????????????????{
????????????????????
foreach(Control?con?in?this.Controls)
????????????????????{
??????????????
//多個from的情況,這里就hardcode了
????????????????????????if?(con.ID?!=?null?&&?con.ID.ToLower().IndexOf("form")?>?-1)?????????????????????????{
????????????????????????????
int?index?=?con.Controls.IndexOf(ocontrol);
????????????????????????????
if(index?!=?-1)
????????????????????????????{
????????????????????????????????
bool?isableFocous?=?false;
????????????????????????????????
while?(!isableFocous)
????????????????????????????????{
????????????????????????????????????index
++;
????????????????????????????????????
string[]?temp?=?con.Controls[index].ToString().Split('.');
????????????????????????????????????
string?typename?=?temp[temp.Length?-?1];
????????????????????????????????????isableFocous?
=?isFocusAble(typename);
????????????????????????????????}
????????????????????????????????con.Controls[index].Focus();
????????????????????????????}
????????????????????????}
????????????????????}

????????????????}
????????????}
????????}

?
?? 發此文的更多是希望能看到各位的思路,我認為要實現這個功能應該還有更簡單的方法。
???
??
??

轉載于:https://www.cnblogs.com/yfx1982/archive/2007/12/11/991077.html

總結

以上是生活随笔為你收集整理的刷新后控制TAB键到下一个控件的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。