0

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

基本上代码是这样工作的:

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中的焦点功能有限制吗?我需要将输入放在表单中吗?

4

3 回答 3

4

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

我会尝试做更新,然后做

setTimeout("setFocus", 0);

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

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

于 2008-09-19T14:15:47.403 回答
0

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

奥辛

于 2008-09-19T14:08:58.400 回答
0

17 of 26已经回答了这个问题。我只想指出,Prototype 对此有本机机制:Function.defer()

于 2008-09-27T04:07:49.720 回答