SOHOゆいちのサイト
FORMの文字チェックをJavascriptで実行してくれるサイトが増えました。ちょっと自分でも毎回色々持ってくるのが手間なので、若干汎用的に作ってみました。
http://www.itassist.info/modules/d3downloads/index.php?page=visit&cid=4&lid=3
といったことができるようにしてあります。
●先ずJavascriptをheadのところで読み込みます。
<script type="text/javascript" src="js/jquery-1.4.2.min.js"></script> <script type="text/javascript" src="js/jquery.form.js"></script>
●次に、FORMの入力欄のHTMLを作成するのですが、対象となる入力タグ(input、selectのタグ)に対して、エラーが発生した場合、このプラグインは以下の感じで動作します。(それぞれのクラス名は変更可能です)
<div class="showError"> <ーーこのタグにerror-colorがセットされます。
<input />
<div class="errorMsg"></div> <ーーこのタグにエラーメッセージがセットされます。
</div>
●個々のタグにチェックしたい内容にあわせて属性をセットしてゆきます。(各タグのname属性は任意で構いません)
数字の入力欄の場合
<input type="text" name="input-formMstNumber" class="formMstNumber"/>
のようにクラスに「formMst1byte」をセットします.
半角英数の入力欄の場合
<input type="text" name="input-formMst1byte" class="formMst1byte"/>
のようにクラスに「formMst1byte」をセットします.
Emailの入力欄の場合
<input type="text" name="input-formMstEmail" class="formMstEmail" />
のようにクラスに「formMstEmail」をセットします.
全角カタカナの場合
<input type="text" name="input-formMstKana" class="formMstKana" />
のようにクラスに「formMstKana」をセットします
全角の場合
<input type="text" name="input-formMstZenkaku" class="formMstZenkaku" />
のようにクラスに「formMstZenkaku」をセットします
最大3文字(文字数は変更可能)の場合
<input type="text" name="input-formCnt" class="formCnt" formcnt="3" />
のようにクラスに「formCnt」をセットします。
また、「formcnt=?」の「?」のところに文字数を指定します。
3文字(文字数は変更可能)の場合
<input type="text" name="input-formJustCnt" class="formJustCnt" formcnt="3" />
のようにクラスに「formJustCnt」をセットします。
また、「formcnt=?」の「?」のところに文字数を指定します。
合計最大5文字以内(文字数は変更可能)の場合
<input type="text" name="input-formGroupCnt1" class="formGroupCnt" formcnt="5" formgroup="testgroup" /> <input type="text" name="input-formGroupCnt2" class="formGroupCnt" formcnt="5" formgroup="testgroup" />
のようにクラスに「formGroupCnt」をセットし、「formcnt=?」の「?」のところに文字数を指定します。
また、formgroupに合計する対象のタグで同じ値のグループ名(任意)を指定します。
合計5文字以内(文字数は変更可能)の場合
<input type="text" name="input-formGroupCnt1" class="formGroupJustCnt" formcnt="5" formgroup="testgroup2" /> <input type="text" name="input-formGroupCnt2" class="formGroupJustCnt" formcnt="5" formgroup="testgroup2" />
のようにクラスに「formGroupCnt」をセットし、「formcnt=?」の「?」のところに文字数を指定します。
また、formgroupに合計する対象のタグで同じ値のグループ名(任意)を指定します。
2つの入力欄がいっちする場合
<input type="text" name="input-formGroupDiff1" class="formGroupDiff" formdiffgroup="testgroup3" /> <input type="text" name="input-formGroupDiff2" class="formGroupDiff" formdiffgroup="testgroup3" />
のようにクラスに「formGroupDiff」をセットます。
また、formdiffgroupに一致する対象のタグで同じ値のグループ名(任意)を指定します。
●FORMをSUBMITするボタンをセットします。
ここではボタンですがimgタグでも
「input type=”img”」でも、どのタグでも構いません。onclickイベントにデータのチェックとSubmitが追加されます.
<input type="button" name="button" value="送信" id="btnNext" />
※この時inputタグのID属性やname属性に「submit」という名前を使わないでください.jQueryの仕様なのかうまくフォームをSubmitできません。
●最後にヘッダー内で、必須項目をセットしながらjQueryのプラグインを呼び出します.
引数の「defaultMstList」にフォーム内でチェックしたいすべての項目のname属性を順番に記載し、必須の場合は「true」、必須ではない場合は「false」をセットします.
$(document).ready(function(){
$('#formtest').checkMstForm({
defaultMstList: {
"input-formMstNumber": true,
"input-formMst1byte": true,
"input-formMstEmail": true,
"input-formMstKana": true,
"input-formMstZenkaku": true,
"input-formCnt": true,
"input-formJustCnt": true,
"input-formGroupCnt1": true,
"input-formGroupCnt2": true,
"input-formGroupJustCnt1": true,
"input-formGroupJustCnt2": true,
"input-formGroupDiff1": true,
"input-formGroupDiff2": true
}
});
});</script>
以下のようなHTMLを記載すると
$(document).ready(function(){
$('#formtest').checkMstForm({
defaultMstList: {
"input-formMstNumber": true,
"input-formMst1byte": true,
"input-formMstEmail": true,
"input-formMstKana": true,
"input-formMstZenkaku": true,
"input-formCnt": true,
"input-formJustCnt": true,
"input-formGroupCnt1": true,
"input-formGroupCnt2": true,
"input-formGroupJustCnt1": true,
"input-formGroupJustCnt2": true,
"input-formGroupDiff1": true,
"input-formGroupDiff2": true
}
});
});</script>
<style type="text/css"> <!--
.error-color {
background-color: red;
}
--></style>
<form action="./" method="post" id="formtest">
<div class="showError">
数字
<input type="text" name="input-formMstNumber" class="formMstNumber" />
<div class="errorMsg"></div>
</div>
<div class="showError">
半角英数
<input type="text" name="input-formMst1byte" class="formMst1byte"/>
<div class="errorMsg"></div>
</div>
<div class="showError">
Email
<input type="text" name="input-formMstEmail" class="formMstEmail"/>
<div class="errorMsg"></div>
</div>
<div class="showError">
全角カタカナ
<input type="text" name="input-formMstKana" class="formMstKana"/>
<div class="errorMsg"></div>
</div>
<div class="showError">
全角
<input type="text" name="input-formMstZenkaku" class="formMstZenkaku"/>
<div class="errorMsg"></div>
</div>
<div class="showError">
最大3文字(文字数は変更可能)
<input type="text" name="input-formCnt" class="formCnt" formcnt="3" />
<div class="errorMsg"></div>
</div>
<div class="showError">
3文字(文字数は変更可能)
<input type="text" name="input-formJustCnt" class="formJustCnt" formcnt="3" />
<div class="errorMsg"></div>
</div>
<div class="showError">
合計5文字以内(文字数は変更可能)
<input type="text" name="input-formGroupCnt1" class="formGroupCnt" formcnt="5" formgroup="testgroup" />
<input type="text" name="input-formGroupCnt2" class="formGroupCnt" formcnt="5" formgroup="testgroup" />
<div class="errorMsg"></div>
</div>
<div class="showError">
合計5文字(文字数は変更可能)
<input type="text" name="input-formGroupJustCnt1" class="formGroupJustCnt" formcnt="5" formgroup="testgroup2" />
<input type="text" name="input-formGroupJustCnt2" class="formGroupJustCnt" formcnt="5" formgroup="testgroup2" />
<div class="errorMsg"></div>
</div>
<div class="showError">
2つの入力欄がいっちすること
<input type="text" name="input-formGroupDiff1" class="formGroupDiff" formdiffgroup="testgroup3"/>
<input type="text" name="input-formGroupDiff2" class="formGroupDiff" formdiffgroup="testgroup3" />
<div class="errorMsg"></div>
</div>
<input type="button" name="button" value="送信" id="btnNext" />
</form>
こんな感じになります。
エラーの時の色やフォント、レイアウトはCSSで自由に設定可能です。
引数は他に以下のようになっています.
nextButton: ‘#btnNext’, // SubmitするタグのID属性
errorMsgMst: ‘必須項目です。’, // 必須項目に未入力の場合のエラー
errorMsgMstNumber: ‘数値で入力してください。’, // 数値入力欄に数値以外が入力された場合
errorMsgMst1byte: ‘半角英数で入力してください。’, // 半角英数欄に半角英数以外が入力された場合
errorMsgMstEmail: ‘Emailに利用できない文字があります。’, // Email入力欄に利用できない文字が入力された場合
errorMsgMstKana: ‘全角カナで入力してください。’, // 全角カナ入力欄に全角カナ以外が入力された場合
errorMsgMstZenkaku: ‘全角で入力してください。’, // 全角入力欄に全角以外が入力された場合
errorMsgCnt: ‘%maxCnt%文字以内で入力してください。’, // 最大文字数をオーバーした場合
errorMsgJustCnt: ‘%justCnt%文字で入力してください。’, // 文字数が指定文字数と一致しない場合
errorMsgGroupCnt: ‘合計%maxCnt%文字以内で入力してください。’, // 合計最大文字数をオーバーした場合
errorMsgGroupJustCnt: ‘合計%justCnt%文字で入力してください。’, // 合計文字数が指定文字数と一致しない場合
errorMsgGroupDiff: ‘入力内容が一致しません。’, // 入力欄の内容が一致しない場合
defaultMstList: {}, // 必須項目リスト 例){ “aaa”: true, “bbb”: false }
encoding: ‘utf-8′, // utf-8 or s-jis(全角のチェックなどで利用されます)
showErrorClass: “.showError”, // エラーメッセージ表示位置を探す際の親クラス
errorMsgClass: “.errorMsg”, // エラーメッセージを表示するクラス
backgroundColorClass: “error-color”, // エラー発生時にshowErrorClassにクラスを適用する場合
www.bshe.org (created by itassist.info)