我知道其他人之前遇到过这个问题。我搜索并尝试了各种不同的解决方案(包括JQuery focus和JQuery Problem .... Focus not working 以及JQuery focus() is not focusing in IE but it is in Chrome),但没有任何效果。
当代码在FF和Chrome中运行时,焦点随之而来。但是,在IE中(我使用的是IE9),没有这样的运气。焦点不在于输入文本。任何帮助将不胜感激。
// textInputArray contains the input field along with some other html with instructions
// about the input field
$("input.answerBox").live("keypress", function(event) {
if ((event.which == 13) && (i < textInputArrayLength)){
$("div.textInput").html(textInputArray[i])
.fadeIn(200);
$("input.focus:last").focus();
i++;
}
}
同样,一切都在FF和Chrome中按预期工作,但不是IE。 textInput div的内容被替换,但输入文本框在IE中没有获得焦点。
编辑:html按要求
<div id="menuBar">
<ul class="dropdown">
<li class="menuLi"><a href="#" class="blank">Item 1</a>
<ul class="sub_menu">
<li class="menuLi"><a href="#" class="blank">Number</a>
<ul class="sub_sub_menu">
<li class="menuLi"><a href="/test/index.php" class="menuItem blank">Sub Item 1</a></li>
<li class="menuLi"><a href="/test/index.php" class="menuItem blank">Sub Item 2</a></li>
</ul>
</ul>
</ul>
<br>
</div>
<div id="main">
<h1 class="header1">Quick Quiz</h1>
<div class="textInput">
</div>
</div>
<div class="footer"></div>
答案 0 :(得分:1)
它是.fadeOut(100)
导致IE中某种类型的冲突
如果我们改变
,它会正常工作$("div.textInput").fadeOut(100).html('<input class="textBox focus" type="text">').fadeIn(200);
使用
$("div.textInput").html('<input class="textBox focus" type="text">').fadeIn(200);
http://jsfiddle.net/8mpRg/1/ [Run in IE]
答案 1 :(得分:1)
我的IE焦点问题也与我对fadeOut()&amp;的使用有关。淡入()。 我的代码短集焦点,两次闪烁文本框并重置焦点:
$('#friend_name').focus();
$('#friend_name').fadeOut(400);
$('#friend_name').fadeIn(400);
$('#friend_name').fadeOut(400);
$('#friend_name').fadeIn(400);
setTimeout(function () {
$('#friend_name').focus();
}, 1300);
我发现为了使焦点功能在IE中工作,我需要添加一个比fadexx函数的组合延迟更长的延迟。
在Chrome中,我可以省略延迟$('#friend_name').focus()
来电。