添加一个输入字段到DOM和它聚焦在IE(Adding an input field to the d

2019-07-29 01:02发布

我试图让一个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上对焦功能限制? 我需要把输入的形式?

Answer 1:

我的猜测是,IE还没有更新的DOM然而,当你拨打电话进行对焦()。 有时,浏览器会等到脚本完成更新DOM之前执行。

我想尝试做更新,然后做

setTimeout("setFocus", 0);

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

您的另一种选择是将有存在在任何时候都DOM两个项目,只是交换的style.display他们根据你所需要的隐藏/在给定时间显示。



Answer 2:

哪个版本的IE浏览器? 什么是DOCTYPE的设置? 是严格的,标准或怪癖模式? 出现任何JavaScript错误(查看状态栏左下角的一小黄色警告标志)? 启用错误通过工具>选项>高级,宣布对所有错误。

[287]莪



Answer 3:

这个问题已经被回答的26 17 。 我只是想指出,该原型具有这种原生机制: Function.defer()



文章来源: Adding an input field to the dom and focusing it in IE