tabindex
考えられる解決策は、タブ化したくない要素のプロパティを設定することのよう-1
です。
<div>
<input type="button" value="tabbable one" />
<input type="button" value="tabbable two" />
</div>
<div>
<input type="button" value="not tabbable" tabindex="-1"/>
<input type="button" value="also not tabbable" tabindex="-1"/>
</div>
これまでのところどのドキュメントにもこれは見つかりませんでしたが、テストしたすべてのブラウザ(FF 3.5、IE 6および7、Opera 9.64)で動作するようです。
もう1つのアプローチはblur()
、不要な要素に焦点が当てられる場合です。
<div>
<input type="button" value="tabbable one" />
<input type="button" value="tabbable two" />
</div>
<div>
<input type="button" value="not tabbable" onfocus="blur()"/>
<input type="button" value="also not tabbable" onfocus="blur()"/>
</div>
このアプローチの欠点は、「abbable」要素をヒットするとすぐに要素が選択されず、次のタブが最初の要素から開始されることです。これは、後方にタブを付けるときに特に注意が必要ですが、これはもう不可能です。これに対する解決策は、正しい次の要素に積極的に焦点を当てることです。
<div>
<input id="firstTabbable" type="button" value="tabbable one" />
<input type="button" value="tabbable two" />
<input id="lastTabbable" type="button" value="tabbable three" />
</div>
<div>
<input type="button" value="not tabbable" onfocus="blur(); $('firstTabbable').focus();"/>
<input type="button" value="also not tabbable" onfocus="blur(); $('lastTabbable').focus();"/>
</div>
しかし、私の意見では、これは少し複雑すぎます。