JavaScriptでフォームに自動フォーカスする方法

JavaScriptでフォームに自動的にフォーカスする方法

自動的にフォーカスさせる方法(オートフォーカス)はいくつかありますが、一番問題が発生しないオートフォーカスさせる方法を紹介します。

HTMLのautofocus属性を使う

HTML5では、すべてのフォームコントロールにautofocus属性が導入されています。しかし、ブラウザによってはautofocus属性をサポートしていない場合があります。もしブラウザがautofocus属性をサポートしていない場合、JavaScriptでautofocusさせる必要があります。

JavaScriptで特定の要素がautofocus属性をサポートしているか確かめる

JavaScriptで特定の要素が要素がautofocus属性をサポートしているか確かめるには以下のコードで行います。

functiton supports_autofocus() {
    var i = document.createElement('input');
    return 'autofocus' in i;
}

JavaScriptでオートフォーカスさせる

オートフォーカスしたい<input>タグの直下に<script>タグを挿入すればオートフォーカスさせることができます。

HTML

<body>
    <form>
        <input type="text" id="target" autofocus />
        <script>document.getElementById("target").focus()</script>
        <input type="submit" />
    </form>
</body>

上記のことを踏まえ、オートフォーカスさせるためには、HTML5のautofocus属性を使い、もし開いているユーザーのブラウザがそれをサポートしていない場合、JavaScriptでオートフォーカスさせるという手法をとります。
コードは以下のようになります。

HTML

<body>
    <form>
        <input type="text" id="target" autofocus />
        <script>if (!supports_autofocus()) {document.getElementById("target").focus()};</script>
        <input type="submit" />
    </form>
</body>

JavaScript

functiton supports_autofocus() {
    var i = document.createElement('input');
    return 'autofocus' in i;
}



イベント