将输入字段添加到dom并将其集中在IE中
时间:2020-03-06 14:26:03 来源:igfitidea点击:
我正在尝试制作一个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中的焦点功能是否有限制?我需要将输入内容放在表格中吗?
解决方案
什么版本的IE?DocType设置为什么?是严格的,标准的还是怪异的模式?是否出现任何JavaScript错误(请检查状态栏左下方的黄色警告标志)?通过"工具">"选项">"高级"启用对所有错误宣布的错误。
爱信
我的猜测是,当我们调用focus()时,IE尚未更新DOM。有时,浏览器会等到脚本执行完毕后再更新DOM。
我会尝试进行更新,然后再进行
setTimeout("setFocus", 0); function setFocus() { editElement.focus(); }
另一个选择是始终将两个项目都显示在DOM中,而只是交换style.display即可,具体取决于我们需要在特定时间隐藏/显示的内容。
这个问题已经由26个问题中的17个得到了回答。我只想指出,Prototype为此具有本地机制:Function.defer()