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

jQuery $.focus() not working with id and with input type

我有个小问题:

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

关闭时,我需要清空另一个 ID 为 "results" 的 div,清空一个 ID 为 "search" 的输入并关注它:

这是我的 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();
});

and(是本页唯一的文字输入):

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

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

我想不通我在做什么missing/doing错了!

有帮助吗?提前致谢!

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

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

超时处理程序将 运行 基本上在触发事件处理程序全部完成后立即进行。