即使设置了焦点也无法在文本框中输入

Posted

技术标签:

【中文标题】即使设置了焦点也无法在文本框中输入【英文标题】:Unable to type in textbox even with focus set 【发布时间】:2010-09-10 14:10:14 【问题描述】:

我有一个 Flash 键盘(不是我写的,我不知道 Flash),用户可以使用它来输入 Web 表单。键盘工作正常,我能够正确填写字段。

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

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

【问题讨论】:

如果您将焦点放在另一个字段上然后又回到原来的位置会怎样? 模糊化和将焦点重新放在场上不是一回事吗? 【参考方案1】:

我让它工作了。我通过模糊字段并在超时后重新设置焦点来获得它。我不能在这里写它为什么会起作用,因为它涉及我们自己的 javascript 框架。谢谢你的时间。

【讨论】:

我知道这是旧闻,但我只想说声谢谢!!!我一直在研究一个与此非常相似的愚蠢问题,从未想过先模糊它然后集中注意力。这对我有用!再次感谢!【参考方案2】:

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

如果只是 IE,我也许可以挖掘一些我必须解决问题的代码。

【讨论】:

是的,它的 IE。我什至没有在其他浏览器中测试过这个。好吧,我不能说为什么它只有 IE,但如果你能提供一些建议,那就太好了 那你能不能在其他浏览器上测试一下,如果出现同样的问题,请告诉我们? 好吧,我不能,这个应用程序在我们自己的运行 IE 的专有环境中运行。没有其他浏览器。谢谢。【参考方案3】:

可怕的是,这里甚至需要一个答案,但这里有一个 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);
    

编码愉快。

布赖恩

【讨论】:

【参考方案4】:

只需要注意 z-index 属性。设置 z-index 以使文本框位于顶部

【讨论】:

【参考方案5】:

我会用user281693给出的答案代码帮助大家-

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

element 是你的文本框。

【讨论】:

以上是关于即使设置了焦点也无法在文本框中输入的主要内容,如果未能解决你的问题,请参考以下文章

即使有焦点也无法访问组合框文本属性

如何在没有焦点的情况下突出显示/选择 wpf 文本框中的文本?

wpf 焦点定位到 文本框开头? 2:如何按Tab,让焦点不进入第3个文本框,意思是在前两个文本框中切换

WPF:无法设置焦点

将焦点设置在WPF中的文本框中

在焦点上清除输入框中的默认文本