即使设置了焦点也无法在文本框中输入
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 文本框中的文本?