【问题标题】:MSIE: Keep focus in text field when clicking outside of itMSIE:单击文本字段外部时保持焦点在文本字段中
【发布时间】:2011-03-25 11:46:06
【问题描述】:

我正在尝试在单击页面上的某些内容时在文本字段中的当前插入符号位置插入文本。

为了完成这项工作,点击时焦点不应离开文本字段,并且插入符号不应移动。

我可以在 mousedown 事件中使用 event.preventDefault() 在 chrome 中实现此功能。

但在 Internet Explorer 中,我根本无法完成这项工作。欢迎提出任何建议。

澄清:我试图为用户提供一些很好的方法来输入无法直接从键盘输入的奇异字符。

我已经实现了例如 ctrl+alt+p,它在所有浏览器中都能正常工作,除了 Internet Explorer,我无法停止按 ALT(激活菜单栏)的默认行为。

然后,我在字段旁边制作了一个字符“调色板”,可以在键入时用鼠标单击。这适用于所有浏览器,除了 Internet Explorer,我无法阻止鼠标点击的默认模糊行为。

【问题讨论】:

  • 我知道在 IE 中你可以使用window.event.returnValue = false; 来防止默认行为。你试过这个吗?
  • 是的,我试过 returnValue = false。没有雪茄:/

标签: javascript internet-explorer events browser


【解决方案1】:

不要这样做

我建议你不要这样做,因为在文本字段中保留(或者更好地说是返回焦点)插入符号也会阻止用户更改浏览器的地址栏,这是你不想要的..

我建议您更详细地解释您的流程,也许我们可以提出更好的替代方案。

经过一番澄清

您应该做的是在插入符号位置插入文本/字符。 inputtextarea 保留插入符号位置,即使它们失去焦点。所以你应该做一些类似于 stackoverflow 在这里所做的事情。当您选择一些文本(当您键入问题/答案时)然后单击顶部的 B 图标时,会在所选文本周围添加两颗星。这就是你应该如何插入特殊字符。当用户单击特定的外来字符时,应在输入的插入符号位置添加/插入该字符。

有很多与解决这个确切问题相关的 stackoverflow 问题 - 在插入符号位置添加文本:

【讨论】:

  • 有关如何输入用户键盘中不可用的字符的任何其他建议?非常感谢任何帮助:)
  • @Dennis Thrysøe:检查我编辑的答案。它应该给你一些你应该采取的方向。
  • 我们同意。我试图做同样的事情,但在 Internet Explorer 的输入框中保持焦点/插入符号时遇到问题。我会尝试你的建议:)
  • 如果不将插入符号移到开头,仍然无法将输入重新聚焦在 Internet Explorer 上。但是你的回答还是不错的。
  • @Dennis:我建议你检查一下 Stackoverflow 的功能——它是否可以在不同的浏览器中可靠地工作,并调试它们的代码以查看它是如何完成的。
【解决方案2】:

也许这是一场死胡同,但我有一个解决方案。

对于 IE,请专门查看 onbeforedeactivate 事件。您需要将此附加到要保持焦点的元素上。这有点棘手,因为如果你总是取消这个事件,你永远不会失去对这个元素的关注,但是如果你小心如何实现它,你可以实现你想要的。

我已经这样做了一段时间了,结果很干净。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-25
    • 2020-03-18
    • 2015-09-21
    • 2010-11-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多