将输入字段添加到dom并将其聚焦到IE中

时间:2008-09-19 14:03:25

标签: javascript internet-explorer focus prototypejs

我正在尝试创建一个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中的焦点功能是否有限制?我是否需要将输入放在表单中?

3 个答案:

答案 0 :(得分:4)

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

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

setTimeout("setFocus", 0);

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

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

答案 1 :(得分:0)

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

[287]莪

答案 2 :(得分:0)

问题已由17 of 26回答。我只想指出,Prototype具有本机机制: Function.defer()