3

我知道其他人以前遇到过这个问题。我已经搜索并尝试了各种不同的解决方案(包括JQuery focusJQuery Problem .... Focus not workingJQuery focus() is not focus 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>
4

2 回答 2

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]

于 2012-05-19T10:48:45.297 回答
1

我的 IE 焦点问题也与我使用淡出()和淡入()有关。我的简短代码设置焦点,使文本框闪烁两次并重置焦点:

$('#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()调用。

于 2015-10-13T14:35:46.723 回答