我有重命名某些 div 的功能。我试图让它工作的方式是这样的:
- 用户右键单击 div
- 用户单击上下文菜单上的“重命名”
- div 获取输入元素并自动聚焦
- 按下回车键或单击屏幕后,输入被提交
我已经完成了大部分步骤,但是单击“重命名”后输入元素没有被聚焦。这是代码:
function Rename( ){
ClickedFile.innerHTML = "<input class='Rename' type='text' value='" + ClickedFile.innerHTML + "'>";
ClickedFile.childNodes[0].focus();
}
ClickedFile 是被右键单击的节点。更改 innerHTML 工作正常,但 .focus() 没有,我不知道为什么。我也没有在控制台上收到任何错误。
我也尝试过使用:
ClickedFile.childNodes[0].select();
ClickedFile.childNodes[1].focus();
ClickedFile.focus();
他们都没有工作。
编辑:
我知道使用 JQuery 可能会有所帮助,但我更感兴趣的是找出为什么这不起作用。
我解决了这个问题。它与事件处理程序有关。我的答案贴在下面。