javascript - 使用 jQuery 检查输入元素的焦点失败

标签 javascript jquery forms input

当下面的输入表单获得焦点时,我想执行一个 jQuery 函数:

var hasFocus = $("input#edit-search-block-form--2").is(':focus');
if (hasFocus) {
  alert('It is working!');
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form action="/" method="post" id="search-block-form" accept-charset="UTF-8">
  <div>
    <div class="container-inline">
      <h2 class="element-invisible">Search form</h2>
      <div class="form-item form-type-textfield form-item-search-block-form">
        <label class="element-invisible" for="edit-search-block-form--2"></label>
        <input title="Enter the terms you wish to search for." placeholder=" " id="edit-search-block-form--2" name="search_block_form" value="" size="15" maxlength="128" class="form-text" type="text">
      </div>
      <div class="form-actions form-wrapper" id="edit-actions">
        <input id="edit-submit" name="submit" value="Search" src="search.svg" class="form-submit" style="display: inline-block;" type="image">
      </div>
      <input name="form_build_id" value="1234567890abc" type="hidden">
      <input name="form_id" value="search_block_form" type="hidden">
    </div>
  </div>
</form>
但我就是不让它发挥作用。很高兴收到每一个建议。

最佳答案

您需要附加一个事件处理程序来不断检查该输入元素上的 focus 事件。您当前的代码仅执行一次,并且在执行时该元素似乎没有焦点

$(document).ready(function() {
  $("input#edit-search-block-form--2").on('focus', function() {
    alert('It is working!');
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form action="/" method="post" id="search-block-form" accept-charset="UTF-8">
  <div>
    <div class="container-inline">
      <h2 class="element-invisible">Search form</h2>
      <div class="form-item form-type-textfield form-item-search-block-form">
        <label class="element-invisible" for="edit-search-block-form--2"></label>
        <input title="Enter the terms you wish to search for." placeholder=" " id="edit-search-block-form--2" name="search_block_form" value="" size="15" maxlength="128" class="form-text" type="text">
      </div>
      <div class="form-actions form-wrapper" id="edit-actions">
        <input id="edit-submit" name="submit" value="Search" src="search.svg" class="form-submit" style="display: inline-block;" type="image">
      </div>
      <input name="form_build_id" value="1234567890abc" type="hidden">
      <input name="form_id" value="search_block_form" type="hidden">
    </div>
  </div>
</form>

关于javascript - 使用 jQuery 检查输入元素的焦点失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48147685/

相关文章:

javascript - 如何在Vue中设置当前年份加上 future 5年的数组?

javascript - Firebase Web SDK 3.x ServerValue 时间戳?

Javascript 在 RGBA 范围内放入 4 个整数

javascript - AngularJS CORS http 调用不起作用,但普通 Ajax 和 jQuery 工作正常

javascript - 测试表单数据并返回单个错误消息(Javascript)

javascript - 一个项目中的 Coffeescript 和 es6 - 实践中的迁移

jquery - 使用 jQuery 动态获取单选按钮组名称

jquery - 如何让平移变换从元素开始?

javascript - 如何在不提交的情况下获取将提交的所有表单值

javascript - 如何在用户离开(关闭)页面时发送 AJAX 请求?