JavaScript IE焦点setTimeout无法使用复选框

时间:2012-10-12 15:32:12

标签: javascript internet-explorer focus

我正在尝试使用setTimeout解决方法修复已知的“JavaScript焦点()在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>

1 个答案:

答案 0 :(得分:1)

input元素是空标记,不包含内容。这就是为什么

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

不起作用。

您应该使用标签

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

怪癖模式的问题是onchange is not triggered with click events。将其更改为onclick,它将神奇地开始工作。

代码在没有超时的情况下正常工作。 Example