[.NET] FOCUS與低解析度的問題

看板Visual_Basic作者 (ianchu)時間10年前 (2014/05/07 15:22), 10年前編輯推噓2(201)
留言3則, 2人參與, 最新討論串1/1
請輸入專案類型(網站專案或者應用程式專案): 網站 我在寫一個ASP.NET網頁表單,裡面有很多TEXT BOX要輸入 很多TEXT BOX都有validator做格式驗證 在螢幕解析度低的畫面上他的TEXT BOX會超出畫面 我使用JS的FOCUS去控制輸入順序讓焦點可以照著順序跳 (用ASP.NET的FOCUS在IE8上有問題) 但是用JS的FOCUS在IE8或IE10,在低解析度時都會遇到一個問題 若輸入錯誤後,想按網頁上方的其他連結,就要用滾輪滾上去 但是FOCUS就會把畫面帶下來讓沒有輸入完的TEXT BOX在畫面第一行 如果在高解析度的畫面因為可以直接看到上方的按鈕 所以不會被FOCUS帶動畫面 想請問有沒有辦法讓FOCUS不會捲動畫面,或者應該是其他的問題呢? --

05/07 19:46, , 1F
你textbox小一點就不會超出了阿..
05/07 19:46, 1F

05/07 20:03, , 2F
之後 javascript scroll google一下
05/07 20:03, 2F

05/09 10:26, , 3F
因為textbox太多了所以不可能縮小 不然使用者會看不到...
05/09 10:26, 3F
原本的作法是 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
文章代碼(AID): #1JQTyUI8 (Visual_Basic)