autofocus

更新日
仕様 HTML Living Standard
分類 グローバル属性

autofocus属性は、要素の自動的なフォーカスを設定します。

この属性が指定された要素は、文書の読み込み時、またはダイアログが表示された時に自動的にフォーカスされます。


<input type="text" autofocus>

属性
グローバル属性
autofocus 自動的なフォーカスを設定 autofocus 値は省略可能

指定に関する制限について

autofocus属性が指定された要素は、直近祖先のオートフォーカス・スコーピング・ルート要素内に2つ以上あってはなりません。

  • dialog要素autofocus属性が指定されている場合は、そのdialog要素自身直近祖先のオートフォーカス・スコーピング・ルート要素になります。
  • autofocus属性を指定した要素がdialog要素内に置かれている場合は、直近祖先にあたるdialog要素直近祖先のオートフォーカス・スコーピング・ルート要素になります。
  • autofocus属性を指定した要素がdialog要素内に置かれていない場合は、html要素直近祖先のオートフォーカス・スコーピング・ルート要素になります。
<!DOCTYPE html>
<html>
<head>

<title>文書のタイトル</title>

</head>
<body>

<dialog autofocus>
ダイアログ
</dialog>

<dialog>
<p><input type="text" autofocus></p>
</dialog>

<p><input type="text" autofocus></p>

</body>
</html>

つまり、autofocus属性が指定された要素は、

  • 基本的には1つの文書内で1つだけ配置できるが、
  • dialog要素があればその中でも1つだけ配置できる、

ということになります。

指定できる要素

autofocus属性はグローバル属性のため、全てのHTML要素に指定することができます。

  • ただし、属性と要素の組み合わせによっては効果がない場合もあります。
旧HTMLからの変更点
  • HTML LS:一部の要素に定義されていたautofocus属性が、グローバル属性として再定義されました。

使用例

ページを表示した時にフォーカスした例

<!DOCTYPE html>
<html>
<head>

<title>文書のタイトル</title>

</head>
<body>

<p><input type="text" autofocus></p>

</body>
</html>

表示例

サンプル画面へ新規ウィンドウで表示

ダイアログを表示した時にフォーカスした例

<p><button type="button" id="openButton">モーダルダイアログを表示</button></p>

<dialog id="exDialog" style="width: 250px; height: 150px; text-align: center;">
<p><input type="text" name="example1"></p>
<p><input type="text" name="example2" autofocus></p>
<p><button type="button" id="closeButton">閉じる</button></p>
</dialog>

<script>

var openButton = document.getElementById('openButton');
var closeButton = document.getElementById('closeButton');
var exDialog = document.getElementById('exDialog');

openButton.addEventListener('click', function() {

    exDialog.showModal();

    // showModal() = モーダルダイアログ(周囲の領域は操作不能)
    // show() = モードレスダイアログ(周囲の領域も操作可能)

});

closeButton.addEventListener('click', function() {

    exDialog.close();

});

</script>

表示例

  • autofocus属性が指定されていない場合は、ダイアログ内の最初の入力欄が自動的にフォーカスされるようです。(Chrome、Edge、Firefoxで確認)