我正在尝试制作一个 div,当您单击它时,它会变成一个输入框,并将其聚焦。我正在使用原型来实现这一点。这在 Chrome 和 Firefox 中都有效,但在 IE 中无效。即使我设置了 1 秒超时,IE 也拒绝聚焦新添加的输入字段。

基本上代码的工作原理如下:

var viewElement = new Element("div").update("text");
var editElement = new Element("input", {"type":"text"});
root.update(viewElement);

// pseudo shortcut for the sake of information:
viewElementOnClick = function(event) {
    root.update(editElement);
    editElement.focus();
}

上面的例子是实际代码的缩短版本,除了 IE 中的焦点位之外,实际代码工作正常。

IE 中的焦点功能有限制吗?我需要将输入放在表单中吗?

有帮助吗?

解决方案

我的猜测是,当你调用focus()时,IE还没有更新DOM。有时浏览器会等到脚本执行完毕后再更新DOM。

我会尝试进行更新,然后执行

setTimeout("setFocus", 0);

function setFocus()
{
    editElement.focus();
}

您的另一个选择是始终在DOM中同时显示这两个项目,并根据您在给定时间隐藏/显示的内容交换style.display。

其他提示

什么版本的IE?您的DocType设置为什么?是严格,标准还是怪癖模式?出现任何javascript错误(检查状态栏左下角是否有一个小黄色警告标志)?通过工具>启用所有错误的错误通知选项>高级。

[287]莪

17 of 17 。我只想指出,Prototype具有本机机制: Function.defer( )

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top