拡張 autofocus

画面描画時に以下優先順位で入力フィールドへ自動フォーカス。非表示状態の要素は対象外。

  • エラークラスを持つ入力フィールド
  • autofocus属性を持つ入力フィールド
  • DOM上の先頭の入力フィールド
//先頭の入力フィールドに対し自動フォーカス
var focus = function( expr , autofocus){
	var ret = false;
	$(expr).each(function(){
		var target = $(this);
		if (!target.is(':hidden') && (
			(!autofocus && !(/button|submit/.test(target.attr('type')))) ||
			(autofocus && target.attr('autofocus') == '')
		)) {
			ret = true;
			target.focus();
			return false;
		}
	});
	return ret;
}
var expr = 'input,textarea,select';
var errExpr = (expr).split(',').join('.error,') + '.error';
if (!focus(errExpr)){
	if (!focus(expr, true)){
		focus(expr);
	}
}