2

我无法在搜索中找到答案。

使用javascript我有一个带有onclick事件的div(ac),其中一部分是将焦点设置到以前隐藏的div(as)中的输入元素(gn)。

我希望这会起作用:

ac.onmousedown = function () {
    csect.style.display = "none";
    as.style.display = "block";
    gn.focus();
}

但没有,所以我加了一点延迟

ac.onmousedown = function () {
    csect.style.display = "none";
    as.style.display = "block";
    setTimeout(function(){
        gn.focus()
        },30);
}

这使它工作。

这种延迟真的有必要吗?我错过了什么吗?

谢谢你的帮助。

4

1 回答 1

3

单击的默认操作(将焦点设置为您单击的内容)在mousedown事件处理程序触发后发生。这意味着 JavaScript 将焦点设置为,然后单击的正常行为将焦点设置为。gnacac

请参阅此示例进行演示。

使用click事件而不是mousedown事件。

于 2013-06-15T16:41:54.773 回答