Javascript 向dom添加输入字段并在IE中聚焦
我试图制作一个div,当你点击它时,它会变成一个输入框,并聚焦它。我使用原型来实现这一点。这在Chrome和Firefox中都有效,但在IE中不行。IE拒绝关注新添加的输入字段,即使我设置了1秒超时 基本上,代码是这样工作的:Javascript 向dom添加输入字段并在IE中聚焦,javascript,internet-explorer,focus,prototypejs,Javascript,Internet Explorer,Focus,Prototypejs,我试图制作一个div,当你点击它时,它会变成一个输入框,并聚焦它。我使用原型来实现这一点。这在Chrome和Firefox中都有效,但在IE中不行。IE拒绝关注新添加的输入字段,即使我设置了1秒超时 基本上,代码是这样工作的: var viewElement = new Element("div").update("text"); var editElement = new Element("input", {"type":"text"}); root.update(viewElement);
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错误(检查左下方的状态栏是否有黄色警告标志)?通过工具>选项>高级为所有错误启用错误通知
Oisin是什么版本的IE?您的DocType设置为什么?它是严格的、标准的还是怪癖的模式?出现任何javascript错误(检查左下方的状态栏是否有黄色警告标志)?通过工具>选项>高级为所有错误启用错误通知
Oisin我猜IE在调用focus()时还没有更新DOM。有时浏览器会等到脚本执行完毕后再更新DOM 我会尝试做更新,然后做
setTimeout("setFocus", 0);
function setFocus()
{
editElement.focus();
}
您的另一个选择是让这两个项目始终存在于DOM中,并根据您在给定时间需要隐藏/显示的内容来交换样式。在它们上显示。我猜,当您调用focus()时,IE尚未更新DOM。有时浏览器会等到脚本执行完毕后再更新DOM 我会尝试做更新,然后做
setTimeout("setFocus", 0);
function setFocus()
{
editElement.focus();
}
您的另一个选择是让这两个项目始终存在于DOM中,并根据您在给定时间需要隐藏/显示的内容,在它们上交换样式。问题已经由回答。我只想指出,原型对此有其固有的机制:这个问题已经有了答案。我只想指出,Prototype对此有自己的机制:什么是根,root.update做什么?root.update用新内容替换元素的内容。什么是root?root.update做什么?root.update用新内容替换元素的内容。IE 7.0.5730.13-我没有错误。使用editElement.select()似乎可以聚焦框,但它没有显示编辑插入符号。IE 7.0.5730.13-我没有收到任何错误。使用editElement.select()似乎可以聚焦框,但它没有显示编辑插入符号。我以为我已经尝试过了,但您的答案似乎是正确的。但我需要等待500毫秒,它才能真正工作。我想我会选择always have和input元素,而不是div。我想我已经试过了,但你的答案似乎是正确的。但我需要等待500毫秒,它才能真正工作。我想我会选择always have和input元素,而不是div。