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