Edited at

jQueryでページ内に最初に現れるinputタグにフォーカスを当てたい場合(ただし、hiddenタグは除く)

More than 5 years have passed since last update.

ページ内に最初に現れるinputタグにフォーカスを当てたい(ただし、hiddenタグは除く)という処理をjQueryで実現するには以下のように書けばよい。

$('input[type!=hidden]:first').focus();

追記

@smzkさんから、より良い方法を編集リクエストで頂きました。

$('input:visible').eq(0).focus();

ポイントは以下2つ。


  • :visibleであれば、input[type=hidden]もdisplay:noneも除外するので、ページ内に最初に見え現れるinputタグにフォーカスを当てることができる

  • :firstは遅いので、.eq(0)に変更

編集リクエストを頂いて調べてみたのですが、:firstは速度面で難があるということで.eq(0)を使うか、あるいは以下のように.first()を使うといいようです。

$('input:visible').first().focus();

ありがとうございます!