Note: この記事は、3年以上前に書かれています。Webの進化は速い!情報の正確性は自己責任で判断してください。
簡単なFormチェック用のスクリプトを用意してみました。HTML側のコールはonSubmitのみ。各処理をできるだけサブルーチン化して、必要に応じて呼び分ける方式で記述してます。
name属性の使い方を工夫すれば、使うFormが増えても、大元ののコール関数は一個で十分かもしれない!
ソースは以下
HTML
<form action="" method="post" id="check" onsubmit="return formCheck(this);"><dl><dt>名前</dt><dd><input type="text" size="30" value="" name="name" /></dd><dt>本文</dt><dd><textarea cols="30" rows="10" name="body"></textarea></dd><dt>Email</dt><dd><input type="text" size="30" value="" name="mail" /></dd><dt>トラックバック</dt><dd><textarea cols="30" rows="10" name="track"></textarea></dd></dl><p><input type="submit" value="送信" /></p></form>
Script (コール関数)
function formCheck(form) {// 入力チェックif(!chNull(form.name, '名前')) return false;if(!chNull(form.body, '本文')) return false;// 文字数チェックif(!chNum(form.name,3,25, '名前')) return false;// 半角チェックif(!chHalf(form.mail, 'Email')) return false;// アドレスチェックif(!chMail(form.mail, 'Email')) return false;// URLチェックif(!chURL(form.track, 'トラックバック')) return false;return true;}var email = /[\w\.\-.\_]+@([\w\-]+\.)+[\w]+/ig;var http_url = /s?https?:\/\/[-_.!~*'()a-zA-Z0-9;/?:@&=+$,%#]+/ig;var ftp_url = /ftp:\/\/[-_.!~*'()a-zA-Z0-9;/?:@&=+$,%#]+/ig;
Script (入力チェック)
function chNull(obj,msg) {if(!obj) return true;if(obj.value=="") {window.alert(msg+'が入力されていません');obj.focus();return false;}return true;}
Script (文字数チェック)
function chNum(obj,min,max,msg) {if(!obj) return true;var num = obj.value.length;var brw = navigator.appName;if(num < min) {window.alert(msg + 'は' + min + '文字以上で入力してください')obj.focus();return false;}if(num > max) {window.alert(msg + 'は' + max + '文字以下で入力してください')obj.focus();return false;}return true;}
Script (半角チェック)
function chHalf(obj,msg){if(!obj) return true;var str = obj.value;for (var i=0; i<str.length; i++) {/* 1文字ずつ文字コードをエスケープし、その長さが4文字未満なら半角 */var len = escape(str.charAt(i)).length;if (len >= 4){window.alert(msg + 'に全角文字が含まれています');obj.focus();return false;}return true;}
Script (mailチェック)
function chMail(obj,msg) {if(!obj) return true;var adr = obj.value;if(adr=="") return true;if(email.test(adr)==false) {window.alert(msg + 'のアドレスが不正です');obj.focus();return false;}return true;}
Script (URLチェック)
function chURL(obj,msg) {if(!obj) return true;var url = obj.value;if(url=="") return true;if(http_url.test(url)==false) {window.alert(msg + 'のURLが不正です');obj.focus();return false;}return true;}
2006.08.26 : 各サブルーチンに、そもそも「オブジェクトが存在するか」の確認を追加。これでコール関数にnameを追加するだけでチェック項目を追加できる。
Note: スパム対策が面倒なので、コメント投稿を廃止しました。以前のコメントは残します。
ご意見・ご要望はtwitter@sigwygかはてブコメントにて。