即使使用焦点设置,也无法输入文本框

时间:2010-09-10 14:10:14

标签: javascript

我有一个闪存键盘(不是我写的,我不知道闪存),用户用它来输入网络表单。键盘工作正常,我能够正确填充字段。

当键盘遮挡任何字段时,我正在滚动文档(在EnsureNotObscured()方法中),以便输入字段不会被遮挡。这是我遇到问题的地方。滚动文档后,我可以看到输入字段仍然具有焦点(光标闪烁),但是当我键入时没有任何内容出现。

如果我再次在该字段中单击鼠标,那么我可以输入该字段。这种行为可能是什么原因?我甚至尝试使用明确设置焦点 document.getElementById(field.id).focus()在EnsureNotObscured()中滚动文档后仍然无法正常工作。我甚至尝试模糊场,然后设置焦点但没有成功。

5 个答案:

答案 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)

元素是你的文本框。