Bootstrapで作成したフォームの入力チェックプログラムです。特に日本語の環境に特化した機能を提供します。
Bootstrap Ver.3.xに対応したBootstrap Form Validation V3のリリースに伴い、Ver2.x対応の本プログラムをBootstrap Form Validation V2と改名し、継続してアップデートさせていきます。
<type="tel / url / email / number" />
など項目の目的にあった機能を実現します。required / minlength / maxlength / pattern
など項目への入力制限機能を実現します。BootstrapのCSS読み込んだ後、bootstrapFormValidation-x.x.x.css
を読み込んでください。
<link rel="stylesheet" type="text/css" href="//maxcdn.bootstrapcdn.com/bootstrap/2.3.1/css/bootstrap-combined.min.css">
<link rel="stylesheet" type="text/css" href="bootstrapFormValidationV2-x.x.x.css">
jQueryとBootstrapを読み込んだ後、bootstrapFormValidation-x.x.x.min.js
を読み込んでください。
<script type="text/javascript" charset="UTF-8" src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script type="text/javascript" charset="UTF-8" src="//maxcdn.bootstrapcdn.com/bootstrap/2.3.1/js/bootstrap.min.js"></script>
<script type="text/javascript" charset="UTF-8" src="bootstrapFormValidationV2-x.x.x.min.js"></script>
その後、ページがロードされたらフォームの事前準備をするために、対象のフォームに対しbootstrapFormValidation()
を実行します。
<script type="text/javascript" charset="UTF-8">
$(document).ready(function() {
$('#sampleForm').bootstrapFormValidation();
});
</script>
'true'
| 'false''true'
の場合、対象エレメントからフォーカスが外れた際に、随時入力をチェックし警告メッセージを表示します。
'formAlert'
| 任意の文字列'true'
| 'false''true'
の場合、警告メッセージにアイコンを付けることができます。アイコンの指定はwarningIcon
で指定可能です。
'icon-warning-sign'
| Bootstrapの任意のアイコンクラス名addIcon
が'false'
の場合は無視されます。icon-white
等は、半角スペースで区切って「'icon-exclamation-sign icon-white'
」と指定することが可能です。
'必須項目'
| 任意の文字列valCheck="required"
)での警告メッセージ文を変更可能です。入力必須項目に何も入力しなかった場合に表示されます。
'不正形式'
| 任意の文字列valCheck="zip|tel|email|url|passwd"
とvalCheck="groupcheck"
)での警告メッセージ文を変更可能です。特定の項目の入力で形式がおかしな場合に表示されます。
'入力不足'
| 任意の文字列valCheck="passwd|groupcheck"
)での警告メッセージ文を変更可能です。パスワード文字数やチェック選択数が規定に足りない場合に表示されます。
'入力超過'
| 任意の文字列valCheck="passwd|groupcheck"
)での警告メッセージ文を変更可能です。パスワード文字数やチェック選択数が規定を超えた場合に表示されます。
$('#sampleForm').bootstrapFormValidation({
'checkRealtime' : 'false',
'alertMsgClass' : 'formAlert',
'addIcon' : 'true',
'warningIcon' : 'icon-exclamation-sign icon-white',
'requiredMessage' : '入力必須の項目です',
'invalidMessage' : '電話番号の入力が間違っています',
'inputTooShort' : 'パスワードの文字数が足りません',
'inputTooLong' : 'パスワードの文字数が多すぎです'
});
対象フォーム.bootstrapFormValidation();
が実行されたタイミングで、各種エラーメッセージや、チェック処理が対象フォームに付与されます。
valCheck="submit"
を持ったボタンを押した場合、その対象フォーム内の項目に対し上から順に、チェックやサニタイズ等の処理を実行します。valCheck="submit"
を持ったボタンにonclick="XXX"
がある場合)onclick="XXX"
処理を実行します。
※ HTML上に書かれたonclick="XXX"
属性は、HTML上からは消えます。(処理は実行されます。)
action="XXX"
がある場合)action="XXX"
処理を実行します。onclick="XXX"
処理を実行します。
※ 本スクリプト内ではformをsubmitしませんので、XXX処理側でsubmitしてください。
valCheck="required"
を付加してください。入力が無い場合に警告メッセージを表示します。valCheck="required"
は、下記他のオプションと併用ができます。例えば、valCheck="required text"
valCheck="required passwd_4-10"
など。
対象のエレメントにvalCheck="text"
を付加してください。
名前や住所などテキスト項目に対して、全角英数文字を半角に、カタカナの後のハイフンは「ー(長音文字)」にそれ以外は「-(半角)」に置き換えます。
// 全角英数文字を半角に置き換える
ABc123 --> ABc123
あAいBうエ1尾 --> あAいBうエ1尾
// カタカナの後のハイフンは「ー(長音文字)」にそれ以外は「-(半角)」に置き換えられる
カレーラ--ー―‐-メン --> カレーラーメン
新宿区新宿1--2-3ラ-ーメンビルAー303号室 --> 新宿区新宿1-2-3ラーメンビルA-303号室
// 文字列の先頭/末尾のスペース(半角/全角両方)は削除、連続したスペース(半角/全角両方)は「スペース(全角)」1つに置き換えられる
「 ABC 123 あいう」 --> 「ABC 123 あいう」
対象のエレメントにvalCheck="number"
を付加してください。
数量や価格などの数値項目に対して、全角英数文字を半角に、数字以外が含まれていた場合は、入力データを消去します。
// 全角数文字を半角に置き換える
123 --> 123
123456 --> 123456
// 数値以外はデータ消去する
1-A.3 --> データ消去(空欄にする) // 入力必須項目の場合は、警告メッセージ表示
対象のエレメントにvalCheck="tel"
を付加してください。
すべて半角に変換し、携帯電話や固定電話など番号毎に「-(半角)」で区切りを入れます。桁数が合わない場合や数字とハイフン以外の文字が入っている場合に不正形式の警告メッセージを表示します。
// 全角数文字を半角に置き換える
// ハイフン類は全て「-(半角)」に置き換えられる
0120-ー123-456 --> 0120-123-456
0123-ABC-ABC --> 0123-ABC-ABC // 全て半角に変換されるが、エラー警告
03.1234+5678 --> 03.1234+5678 // 全て半角に変換されるが、エラー警告
// 050|070|080|090で始まる11桁は「3桁-4桁-4桁」に置き換えられる
// IP電話、携帯電話、PHS電話
0501ー2345-678 --> 050-1234-5678
040-1234-5678 --> // 正しいフォーマットだが、番号が存在しないためエラー警告
// 0120|0800で始まる10桁は「4桁-3桁-3桁」に置き換えられる
// フリーダイアル
01-2034-5678 --> 0120-345-678
08-00-123456 --> 0800-123-456
// 03|06、0420|0429、04700|04709、0471で始まる10桁は「2桁-4桁-4桁」に置き換えられる
// 市外局番2ケタ+市内局番4桁+加入者番号4桁
031-2-345678 --> 03-1234-5678 // 間違った区切りを正しく変換
0471234567 --> 04-7123-4567 // 千葉、埼玉の一部で採用されいている「2桁-4桁-4桁」形式
0472234567 --> 047-223-4567 // 上記に該当しないので「3桁-3桁-4桁」に変換
// 上記以外で入力時に「-(ハイフン)」等で区切られていない10桁の番号、区切りがおかしい番号は「3桁-3桁-4桁」に置き換えられる
//「4桁-2桁-4桁」の変換には対応しない
05-1234-5678 --> 051-234-5678
0----123456789 --> 012-345-6789
123ー4567890 --> 123-4567890 // 0から始まらない番号は全てエラー警告
// 緊急番号(110/119)、3桁番号サービス(117/171/177)、その他コレクトコール等には対応しない
valCheck="zip"
を付加してください。valCheck="email"
を付加してください。valCheck="url"
を付加してください。
対象のエレメントにvalCheck="passwd"
を付加してください。
パスワードの強度(長さ)を指定したい場合は、passwd
の後ろに「_(アンダーバー)」と数値を指定します。
例えば、6文字以上(上限なし)の場合valCheck="passwd_6-"
、10文字以上20文字以下の場合valCheck="passwd_10-20"
となります。
// 4文字以上10文字までのパスワードを許容、パスワード入力自体は非必須のためパスワード入力時のみ文字数チェック
<input type="password" name="passwd1" valCheck="passwd_4-10">
// 10文字までのパスワードを許容、パスワード入力自体は非必須のためパスワード入力時のみ文字数チェック
<input type="password" name="passwd2" valCheck="passwd_-10">
// 4文字以上10文字までのパスワードを許容、パスワード入力自体必須
<input type="password" name="passwd3" valCheck="required passwd_4-10">
// パスワード入力自体必須のため最低1文字以上の入力が必須 (実質 valCheck="required" と同じ動作)
<input type="password" name="passwd4" valCheck="required passwd">
valCheck="select"
を付加してください。<option>選択してください</option>
などが動作に影響しないようにします。
valCheck="check"
を付加してください。
対象のエレメントにvalCheck="groupcheck"
を付加してください。
同名のチェックボックスの中で一つもチェックされていない場合に警告メッセージを表示します。
チェックの数を指定したい場合は、groupcheck
の後ろに「_(アンダーバー)」と数値を指定します。
例えば、6つのチェックボックスの内、最低3つチェックが必要な場合valCheck="groupcheck_3-"
を6つチェックボックス全てに設定します。
// 趣味を3つ選んで貰いたい場合 (3 <= x <= 3)
// 3つ未満を選択した際:選択不足の警告メッセージを表示
// 4つ以上を選択した際:選択超過の警告メッセージを表示
<div class="form-group">
<label class="col-md-2 control-label" for="inputPassword">趣味</label>
<div class="controls">
<label><input type="checkbox" name="hobbies" value="reading" valCheck="required groupcheck_3-3"> 読書</label>
<label><input type="checkbox" name="hobbies" value="driving" valCheck="required groupcheck_3-3"> ドライブ</label>
<label><input type="checkbox" name="hobbies" value="movies" valCheck="required groupcheck_3-3"> 映画鑑賞</label>
<label><input type="checkbox" name="hobbies" value="cycling" valCheck="required groupcheck_3-3"> サイクリング</label>
<label><input type="checkbox" name="hobbies" value="travelling" valCheck="required groupcheck_3-3"> 旅行</label>
<label><input type="checkbox" name="hobbies" value="ceramics" valCheck="required groupcheck_3-3"> 陶芸</label>
<label><input type="checkbox" name="hobbies" value="yoga" valCheck="required groupcheck_3-3"> ヨガ</label>
</div>
</div>
// requiredの指定がある場合で選択が0個の場合:入力必須の警告メッセージを表示
// requiredの指定がない場合で選択が0個の場合:選択不足の警告メッセージを表示
valCheck="required groupcheck_3-" // 項目を3つ以上選んで貰いたい場合 (3 <= x)
valCheck="required groupcheck_-5" // 項目を5つまで選んで貰いたい場合 (x <= 5)
valCheck="required groupcheck_3-5" // 項目を3つ以上5つまで選んで貰いたい場合 (3 <= x <= 5)
対象のエレメントにvalCheck="file"
を付加してください。
拡張子による選択可否を設定する場合は、スペース区切りで受け入れ可能な拡張子を記載します。
// ファイルの選択が必須の場合
<input type="file" id="your-resume" name="your-resume" valCheck="required file">
// ファイルの選択が必須且つ、選択した拡張子をチェックする場合
<input type="file" id="your-resume" name="your-resume" valCheck="required file pdf doc docx rtf">
// ファイルの選択が必須ではないが、選択した際は拡張子をチェックする場合
<input type="file" id="your-photo" name="your-photo" valCheck="file png jpeg jpg gif">
親セクション(この場合は親)に、クラス名
multiElements
を付与してください。
同一セクション内に複数のチェック対象エレメントがある場合、全ての子エレメントが正常な場合のみ、そのセクションが正常判定されます。
// 親エレメントに'multiElements'クラスを付与する
<div class="form-group multiElements">
<label class="col-md-2 control-label">住所</label>
<div class="controls">
<input type="text" class="form-control col-md-2" name="address1" placeholder="都道府県" valCheck="required text">
<input type="text" class="form-control col-md-4" name="address2" placeholder="市区町村" valCheck="required text">
<input type="text" class="form-control col-md-4" name="address3" placeholder="丁目番地" valCheck="required text">
</div>
</div>
対象のエレメントにvalCheck="submit"
を付加してください。
フォームの送信前にフォーム内の各対象エレメントに対し、上記のチェックを行い、エラー警告が一つもない場合のみ、対象オブジェクト(ボタン)の本来の処理を継続します。
エラー警告がある場合は警告を表示後、return false;
を返し、処理を中断します。
<a class="btn btn-lg" href="#" onClick="alert('test');" valCheck="submit"><i class="icon-envelope icon-white"></i> 送信</a>