作者ian90911 (ianchu)
看板Visual_Basic
標題[.NET] FOCUS與低解析度的問題
時間Wed May 7 15:22:03 2014
請輸入專案類型(網站專案或者應用程式專案):
網站
我在寫一個ASP.NET網頁表單,裡面有很多TEXT BOX要輸入
很多TEXT BOX都有validator做格式驗證
在螢幕解析度低的畫面上他的TEXT BOX會超出畫面
我使用JS的FOCUS去控制輸入順序讓焦點可以照著順序跳
(用ASP.NET的FOCUS在IE8上有問題)
但是用JS的FOCUS在IE8或IE10,在低解析度時都會遇到一個問題
若輸入錯誤後,想按網頁上方的其他連結,就要用滾輪滾上去
但是FOCUS就會把畫面帶下來讓沒有輸入完的TEXT BOX在畫面第一行
如果在高解析度的畫面因為可以直接看到上方的按鈕
所以不會被FOCUS帶動畫面
想請問有沒有辦法讓FOCUS不會捲動畫面,或者應該是其他的問題呢?
--
1F:推 GoalBased:你textbox小一點就不會超出了阿.. 05/07 19:46
2F:推 GoalBased:之後 javascript scroll google一下 05/07 20:03
3F:→ ian90911:因為textbox太多了所以不可能縮小 不然使用者會看不到... 05/09 10:26
原本的作法是
protected void tabControl(){
if(string.IsNullOrEmpty(tb1.text))
tb1.focus();
else if(string.IsNullOrEmpty(tb2.text))
tb2.focus();
else if
....
}
但是在ie8,asp.net的focus不知道為何會在這個中間斷掉
焦點就不見了
所以改用js
protected void jsFocus(string clientid) {
string sScript = "setTimeout(\"document.getElementById('" + clientid
+ "').focus(); \", 1);";
ScriptManager.RegisterStartupScript(this.Page, this.Page.GetType(),
"focus", sScript, true);
}
-------------
protected void tabControl(){
if(string.IsNullOrEmpty(tb1.text))
jsFocus(tb1.ClientID);
else if(string.IsNullOrEmpty(tb2.text))
jsFocus(tb2.ClientID);
else if
....
}
這個在高解析度下可以運作
但就是在低解析度時會把焦點鎖在這個loop
而不能去點上方的選單按鈕
※ 編輯: ian90911 (118.163.27.126), 05/09/2014 10:52:02