0

我正在尝试使用 setTimeout 解决方法解决已知的“JavaScript focus() 在 IE 中不起作用”问题。但是,当从复选框的 onchange 事件处理程序调用的函数中调用它时,它不起作用。

换句话说:

<input type="checkbox" id="TheCheckbox"
       onchange="theCheckboxChanged()" />Check Here

function theCheckboxChanged()
{
    setTimeout(function () { document.getElementById("anotherElement").focus(); }
               , 100);
}

是的,调用时存在“anotherElement”——事实上,它的工作原理与 Firefox 中编写的一样。

如果复选框的格式为:

<input type="checkbox" id="TheCheckbox"
       onchange="theCheckboxChanged()">Check Here</input>
4

1 回答 1

1

输入元素是一个空标签,它不包含内容。这就是为什么

<input type="checkbox" id="TheCheckbox" onchange="theCheckboxChanged()">Check Here</input>

不起作用。

您应该使用标签

<input type="checkbox" id="TheCheckbox" onchange="theCheckboxChanged()"/><label for="TheCheckbox">Check Here</label>

怪癖模式的问题是点击事件不会触发 onchange。将其更改为 onclick,它将神奇地开始工作。

代码在没有超时的情况下可以很好地聚焦元素。例子

于 2012-10-12T15:55:50.120 回答