我有一个闪存键盘(不是我写的,我不知道闪存),用户用它来输入网络表单。键盘工作正常,我能够正确填充字段。
当键盘遮挡任何字段时,我正在滚动文档(在EnsureNotObscured()方法中),以便输入字段不会被遮挡。这是我遇到问题的地方。滚动文档后,我可以看到输入字段仍然具有焦点(光标闪烁),但是当我键入时没有任何内容出现。
如果我再次在该字段中单击鼠标,那么我可以输入该字段。这种行为可能是什么原因?我甚至尝试使用明确设置焦点 document.getElementById(field.id).focus()在EnsureNotObscured()中滚动文档后仍然无法正常工作。我甚至尝试模糊场,然后设置焦点但没有成功。
答案 0 :(得分:2)
我得到了它的工作。我通过模糊字段并在超时后设置焦点来获得它。我不能写这里为什么它工作,因为它涉及我们自己的JavaScript框架。谢谢你的时间。
答案 1 :(得分:1)
所有浏览器都会发生同样的行为吗?我知道我以前在IE中使用鼠标滚轮进行焦点和滚动时遇到了问题,但是如果我没记错的话,这个问题在其他浏览器中没有发生。
如果它只是IE,我可能能够挖掘出一些我必须解决的问题。
答案 2 :(得分:0)
可怕的是,这里甚至需要一个答案,但这里有一个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);
}
快乐的编码。
布赖恩
答案 3 :(得分:0)
只需要照顾z-index属性。以这种方式设置z-index,使文本框位于顶部
答案 4 :(得分:0)
我会帮助每个人使用user281693给出的答案代码 -
jQuery(element).blur();
setTimeout((function(){
jQuery(element).focus();
}),100)
元素是你的文本框。