我正在尝试制作一个 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 。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)