我有一个flash键盘(不是我写的,我也不知道flash),它被用户用来输入到web表单中。键盘工作正常,我可以正确地填写字段。
当键盘遮挡任何字段时,我正在滚动文档(在EnsureNotObscured()方法中),以便输入字段不会被遮挡。这就是我得到这个问题的地方。滚动文档后,我可以看到输入字段仍然具有焦点(光标闪烁),但是当我键入时什么也没有出现。
如果我再次在该字段中单击鼠标,则可以在该字段中键入内容。导致这种行为的原因可能是什么?在EnsureNotObscured()中滚动文档后,我甚至尝试使用document.getElementById(field.id).focus()显式设置焦点,但仍然不起作用。我甚至尝试过对视野进行模糊处理,然后将焦点调回原来的位置,但没有成功。
发布于 2010-09-11 04:54:03
我把它修好了。我通过模糊字段并在超时后将焦点调回原来的位置来获得它。我不能在这里写为什么它会工作,因为它涉及到我们自己的javascript框架。耽误您时间,实在对不起。
发布于 2010-09-10 22:30:48
这种行为在所有浏览器中都会发生吗?我知道我以前在IE中遇到过焦点和鼠标滚轮滚动的问题,但如果我没记错的话,这个问题在其他浏览器中不会发生。
如果只是IE,我也许能够挖掘出一些我必须解决这个问题的代码。
发布于 2011-07-21 02:06:53
可怕的是,这里甚至需要一个答案,但这里有一个IE8安全的方法来解决这个可爱的文本框问题:
/// <summary>
/// Sets focus to a control using either the Page or ScriptManager method depending on which is available.
/// </summary>
/// <param name="control"></param>
public static void SetFocus(WebControl control)
{
string javaScript = String.Format("setTimeout(function() {{ $get('{0}').blur(); setTimeout(function () {{ $get('{0}').focus(); }}, 1); }}, 1);", control.ClientID);
[ClientScript or ScriptManager].RegisterStartupScript(control, control.GetType(), "setFocus", javaScript, true);
}
祝你编码愉快。
布赖恩
https://stackoverflow.com/questions/3685242
复制相似问题