作者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