JavaScriptでリアルタイムバリデーションを実装する その2 バリデーションを実装する
JavaScriptでリアルタイムバリデーションを実装する その2 バリデーションを実装する
ブレイクスルーJavaScriptのChapter-01を参考にリアルタイムで入力チェックしてくれるフォームを実装してみます。この書籍は解説がシンプルでわかりやすく、中級者を目指すJavaScript初級者におすすめです。
バリデーションを実装する
validateメソッド実装する前に、まずは判定を行うvalidation patternのメソッドをプロトタイプで実装します。
// 空かどうか AppModel.prototype.required = function(){ return this.val !== ""; } // 数値がnum以上かどうか AppModel.prototype.maxlength = function(){ return num >= this.val.length; } // 数値がnum以下かどうか AppModel.prototype.minlength = function(){ return num <= this.val.length; }
次にthis.valの値が正しいかどうかをチェックするvalidateメソッドを実装します。
function AppModel(attrs){ this.val = ""; // ここで使用するvalidationのpetternを指定する this.attrs = { required: ""; maxlength: 10; minlength: 5; } // オブザーバの追加 this.listerners = { valid: [], invalid: [] }; }; AppModel.prototype.set = function(val){ if(this.val === val) return; this.val = val; this.validate(); }; AppModel.prototype.validate = function(){ var val; this.errors = []; // バリデーションエラーが出たものを保存しておくための配列 for(var key in this.attrs){ val = this.attrs[key]; // AppModelの添字にkeyを渡すことでメソッドを取り出してvalの引数を実行する if(!this[key](val) this.errors.push(key); } }; // バリデーション後にthis.errorsの中身が空であればvalidイベントを通知し、空でなければinvalidイベントを通知する this.trigger(! this.errors.length ? "valid" : "invalid");
次回はModelとViewの連携を実装していきます。