Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/416.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 向dom添加输入字段并在IE中聚焦_Javascript_Internet Explorer_Focus_Prototypejs - Fatal编程技术网

Javascript 向dom添加输入字段并在IE中聚焦

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);

我试图制作一个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错误(检查左下方的状态栏是否有黄色警告标志)?通过工具>选项>高级为所有错误启用错误通知


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。