jQuery $ .focus()不使用id和输入类型

时间:2016-05-23 14:44:07

标签: javascript jquery twitter-bootstrap focus

我有一点问题:

我有一个模式在使用ajax搜索结果后打开:它会打开并正确显示所有请求的结果。

收盘时,我需要清空另一个带有ID"结果"的div,用ID清空输入"搜索"并专注于它:

  • 空"结果"正在运作
  • 改变"搜索"的价值到""
  • 专注于"搜索"

这是我的HTML:

<div class="col-sm-3">
   <form action="" method="post" id="searchit">
      <div class="input-group mar-btm">
         <span class="input-group-addon"><i class="fa fa-search fa-lg"></i> Ricerca:</span>
         <input type="text" id="search" tabindex="1" class="form-control" name="search" placeholder="Codice, EAN o Testo" />
       </div>
   </form>
 </div>
 <div class="col-sm-4" id="results"></div>

更新 jQuery的:

$(".modal").on('hidden.bs.modal', function () {
     $("#results").empty();
     $("#search").val('');
     $("#search").focus();
});

我也尝试过:

$(".modal").on('hidden.bs.modal', function () {
     $("#results").empty();
     $("#search").val('').focus();
});

和(这是此页面上唯一的文字输入):

$(".modal").on('hidden.bs.modal', function () {
     $("#results").empty();
     $("#search").val('');
     $('input[type="text"]').focus();
});

在每种情况下,empty()和val()都正常工作但没有任何工作与focus()!控制台中没有抛出错误...

我无法弄清楚我错过了什么/做错了什么!

有些帮助吗?提前谢谢!

1 个答案:

答案 0 :(得分:3)

在事件处理程序中尝试使用.focus()的问题通常源于正在处理的事件对焦点产生影响。为了解决这个问题,我通常只是暂停.focus()调用:

$(".modal").on('hidden.bs.modal', function () {
     $("#results").empty();
     $("#searc").val('');
     setTimeout(function() {
       $("#searc").focus();
     }, 10);
});

在触发事件处理程序全部完成之后,超时处理程序将立即运行。