在不使用 focus() 的情况下设置文本框处于活动状态

Posted

技术标签:

【中文标题】在不使用 focus() 的情况下设置文本框处于活动状态【英文标题】:Set textbox active without using focus() 【发布时间】:2014-10-12 04:31:11 【问题描述】:

我有一个小的 iframe 。 iframe 的内容比 iframe 窗口大,左右滚动可以看到。 iframe 中有一个按钮。单击该按钮动画一秒钟并增加 iframe 的高度和宽度,加载表单并将文本框设置为焦点。

 $input[0].focus();

但是,在动画开始之前,focus() 使文本框成为 iframe 窗口的中心,并扭曲了 iframe 窗口中的可见内容。 我怎样才能做到这一点:光标在该文本框中处于活动状态,但没有要重新定位的 iframe 的内容。重新定位是为了使文本框可以在 iframe 的可见部分中。

由于其他限制,我无法将 focus() 放在 animate() 的回调中。

【问题讨论】:

什么限制阻止你把它放在完整的回调中? 这行得通吗? ***.com/questions/4963053/… @PatrickEvans animate 函数是客户端代码的一部分,而 iframe 的内容由服务器端代码加载。我想尽量减少他们之间的互动。 【参考方案1】:

正如@Zyga 所建议的那样,这很有效:

function focusWithoutScrolling (element)
var x = window.scrollX, y = window.scrollY;
element.focus();
window.scrollTo(x,y);

【讨论】:

以上是关于在不使用 focus() 的情况下设置文本框处于活动状态的主要内容,如果未能解决你的问题,请参考以下文章

在 iPad 上,如何在不显示选项的情况下通过 Javascript 事件在选择元素上设置 focus()?

如何在不添加新行的情况下在文本框的边界之外编写文本?

css实现的文本框focus获取焦点设置样式代码实例

如何在不使用自动模型表单的情况下从 Django 的文本框中获取数据?

我们可以在不创建模式的情况下在 spark 数据框中加载分隔的文本文件吗?

JQuery下focus()无法自动获取焦点的处理方法 jquery如何使文本框获得焦点