2010-09-10 103 views
1

我有一个用户用于输入网页表单的闪光键盘(不是我写的,我知道没有闪光灯)。键盘工作正常,我可以正确填写字段。即使设置了焦点,也无法输入文本框

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

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

+0

如果将焦点置于另一个字段然后回到原始位置,会发生什么情况? – 2010-09-10 14:24:41

+0

与模糊并将焦点重新放在场上不一样吗? – user281693 2010-09-10 14:29:33

+0

是的,我错过了那一点。 – 2010-09-10 15:03:59

回答

2

我明白了。我通过模糊领域并在超时后将焦点设置回来了。我不能在这里写下它为什么工作,因为它涉及我们自己的JavaScript框架。谢谢你的时间。

+0

我知道这是旧消息,但我只想说感谢!我一直在研究一个与此非常相似的愚蠢问题,从来没有想过先模糊它,然后专注它。这对我有用!再次感谢! – 2011-03-14 15:42:00

1

在所有浏览器中都发生这种相同的行为吗?我知道我以前遇到过问题,并在IE中使用鼠标滚轮进行滚动,但如果我没有记错,这个问题在其他浏览器中不会发生。

如果它只是IE浏览器,我可能会挖掘一些代码,我不得不解决这个问题。

+0

是的,它的IE浏览器。我还没有在其他浏览器中测试过。那么我不能说为什么它只有IE浏览器,但它会很好,如果你可以提供一些建议 – user281693 2010-09-10 14:46:37

+0

所以你可以在其他浏览器中测试,并让我们知道是否出现相同的问题? – Hawz 2010-09-10 14:59:29

+0

嗯,我不能,这个应用程序运行在我们自己的运行IE浏览器的专有env。没有其他浏览器。谢谢。 – user281693 2010-09-10 15:03:48

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); 
    } 

编码愉快。

Brian

0

只需要照顾z-index属性。坐落在这样的z-index,使文本框应在顶部

0

我会帮助大家通过user281693给出了答案的代码 -

jQuery(element).blur(); 
setTimeout((function(){ 
    jQuery(element).focus(); 
}),100) 

其中元素是你的文本框。