HTML5 の autofocus 属性を拡張する jQuery exAutofocus

更新履歴

2010-11-25
jQuery Alert Dialogs との併用例を追記しました。

HTML5 のサポートブラウザで実装されてる autofocus 属性をクロスブラウザで使用できるようにする jQuery プラグインです。適用したい要素に autofocus 属性を記述した状態で JS ファイルを読み込むと、画面表示時に自動的に autofocus 属性を持つフィールドにフォーカスがあたるようになります。
ただ autofocus の標準機能だけだとあまり実用性がないので、「入力エラーがあった場合はそちらのフィールドへのフォーカスを優先する」といったちょっとした拡張を、オプションで使用できるようにしてあります。

機能概要

クロスブラウザHTML5 の autofocus 属性を機能させることができるようになります。また、拡張機能を有効にすると以下の優先順位でフォーカス先の要素が決まるようになります。

  • エラークラスを持つ入力フィールドがあった場合は、そちらへフォーカス
  • autofocus 属性を持つ入力フィールドがあった場合は、そちらへフォーカス
  • 上記に該当する要素が無かった場合は、先頭の入力フィールドへフォーカス

標準の autofocus 機能の使い方

jquery.js、jquery.exautofocus.js を読み込みます。

<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="jquery.exautofocus.js"></script>

フォーカスを当てたい要素に autofocus 属性を記述しておきます。

<input name="sample" autofocus/>


Demo

拡張機能の使い方

以下のようにプラグインファイルの読み込みで、exAutofocus パラメータを指定すると拡張機能が有効になります。

<script src="jquery.exautofocus.js?exAutofocus=true"></script>


Demo(autofocus 指定なし)


Demo(autofocus 指定あり)

autofocus 属性を持つ入力フィールドが存在しない場合は、先頭の入力フィールドへフォーカスします。また、デモでは値を入力せずに送信ボタンを押すと、該当フィールドに "error" という名前のクラスを付与し再描画するようにしてあり、拡張機能有効時は、この "error" クラスを持つ要素を優先しフォーカスするようになります。

エラークラス名の変更

エラークラス名を変更したい場合は、以下のように errorClass パラメータを指定します。

<script src="jquery.exautofocus.js?exAutofocus=true&errorClass=requiredErr"></script>
プラグイン読み込み時の実行を抑止

プラグイン読み込み時の実行を抑止したい場合は、autorun パラメータを指定します。

<script src="jquery.exautofocus.js?autorun=false"></script>

以下記述で、任意のタイミングでプラグインを実行することができます。

$.ex.autofocus({
    exAutofocus : true,
    errorClass : 'data-err'
});
jQuery Alert Dialogs Plugin を併用してみる

入力項目が多く1画面収まらないような場合は、いきなりエラー項目にフォーカスさせず Alert Dialogs Plugin でメッセージを表示させた後フォーカスさせてみます。

jQuery(function($){
	//この時点で先頭フィールド又はエラーフィールドへフォーカスしてる
	var errCnt = $('.error').size();
	if (errCnt) {
		jAlert(errCnt +' 件の入力エラーがあります', 'Error !',function(){
			//再度エラーフィールドへフォーカスさせる
			$.ex.autofocus({
				exAutofocus : true
			});
		});
	}
});

Demo(Alert Dialogs Plugin の併用)

その他のパラメータ
focusExpr
初期値 : input,textarea,select
フォーカスの対象要素を指定します。拡張機能時のみ有効。
focusButton
初期値 : false
true にするとボタン要素もフォーカスの対象となります。拡張機能時のみ有効。

ダウンロード

こちらからどうぞ