我正在尝试使用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>
答案 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