jQuery 「イベント」フォーカスの移動

.focus()及び、.focusin()イベントハンドラは、要素にフォーカスが移ったときにコールされます。同様に、.blur()及び.focusout()イベントハンドラは、要素からフォーカスが外れたときにコールされます。これらのイベントは、キー操作でもマウス操作でも発生します。.focus()と.focusin()の違い、.blur()と.focusout()の違いは、イベントバブリングに関連するものです。.focus()と.blur()はバブリングしませんので、子要素でフォーカスが移動しても親要素へは伝播しませんが、.focusin()、.focusout()はバブリングをサポートします。引数無しの.focus()、.blur()では、条件にマッチした要素に対し、フォーカスを移動する、またはフォーカスを外せます。

書式

$(対象要素).on('focus', イベントハンドラ)
$(対象要素).on('blur', イベントハンドラ)
$(対象要素).on('focusin', イベントハンドラ)
$(対象要素).on('focusout', イベントハンドラ)

$(対象要素).trigger('focus')
$(対象要素).trigger('blur')

$(対象要素).focus()
$(対象要素).blur()
$('input').on('focus',function(e){
   alert('focus');
});
$('input').on('blur',function(e){
   alert('blur');
});
$('input').on('focusin',function(e){
   alert('focusin');
});
$('input').on('focusout',function(e){
   alert('focusout');
});

$('input').trigger('focus');
$('input').trigger('blur');

$('input').focus();
$('input').blur();

サンプル

フォーカスの出入りを検出する

<body>
  <div class="main">
    <div class="header">
      <h1>jQuery</h1>
    </div>
    <div class="content">
      <form>
        <br>
        姓<br><input class="form-input" type="text" name="lastname"><br> 
        名<br><input class="form-input" type="text" name="firstname"><br> 
        メールアドレス<br><input class="form-input" type="text" name="email"><br>
        電話番号<br>
        <input class="form-input" type="text" name="phone"><br>
        職業 <br>
        <select multiple class="form-input" name="job">
          <option value="">-------</option>
          <option value="employee">会社印</option>
          <option value="self-employed">自営業</option>
          <option value="student">学生</option>
          <option value="homemaker">主婦・主夫</option>
        </select><br>
        <button class="button" type="button" name="submit">送信</button>
      </form>
      <div class="desc"></div>
    </div>
    <div class="footer">
      <hr>
      <p class="copyright">2019 xxxx all rights reserved.</p>
    </div>
  </div>
  <script>
  $(document).ready(function(){
    $('input').on('focusin', function(e) {
      $('.desc').append(e.currentTarget.name + 'にフォーカスが移りました<br>');
    });
    $('input').on('focusout', function(e) {
      $('.desc').append(e.currentTarget.name +'からフォーカスができました<br>');
    });
  });
  </script>
  </body>
実行結果
実行結果