【问题标题】:jQuery $.focus() not working with id and with input typejQuery $.focus() 不适用于 id 和输入类型
【发布时间】:2016-05-23 14:44:07
【问题描述】:

我有个小问题:

我有一个模式,在使用 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();
});

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

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

在任何情况下,empty() 和 val() 都可以正常工作,但 focus() 没有任何效果!控制台没有报错...

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

一些帮助?提前致谢!

【问题讨论】:

  • 试试$("#searc")[0].focus();
  • $("#searc").val(''); - 您的字段的 id 是 search,而不是 searc。
  • 我不确定我是否看到了这个问题的问题是否会导致它被否决;很清楚。
  • 是真实代码中的#searc错字还是复制错误?
  • 抱歉,“搜索”是复制错误。问题不是错字!

标签: javascript jquery twitter-bootstrap focus


【解决方案1】:

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

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

超时处理程序将在触发事件处理程序的任何事情全部完成后立即运行。

【讨论】:

  • 正如克劳德先生所说,请确保您使用的 id 值与 HTML 中的值匹配。
  • 绝对是正确的答案,现在它可以正常工作了!好方法,谢谢!
猜你喜欢
  • 2010-11-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-31
  • 2017-01-19
  • 1970-01-01
  • 2019-01-25
相关资源
最近更新 更多