MooToolsのForm.Validatorの足りないところを補う日本語環境向けaddAllThese。中身は殆どzeromailからの転載。
全角チェック、全てひらがな、全てカタカナ、全て全角数字、全て全角英数、日本語の有無、郵便番号、電話番号。
続きに郵便番号検索APIとの連携例と、Form.Validatorを搭載したメールフォームのデモがあります。
Form.Validator.addAllThese([ ['isJpOnly', { errorMsg:'全て半角英数の文字列は使用できません。', test: function(el){if(el.value.length == 0) return true; else return !el.get('value').test(/^[\x01-\x7e]+$/,'i');} } ], ['isNoAlp', { errorMsg:'全て全角で記入してください。', test:function(el){if(el.value.length == 0) return true; else return el.get('value').test(/^[^ -~。-゚]*$/);} } ], ['isHirakana', { errorMsg:'全てひらがなで記入してください。', test:function(el){if(el.value.length == 0) return true; else return el.get('value').test(/^[あ-ん]+$/,'i');} } ], ['isKatakana', { errorMsg:'全てカタカナで記入してください。', test:function(el){if(el.value.length == 0) return true; else return el.get('value').test(/^[ア-ン]+$/,'i');} } ], ['isZNum', { errorMsg:'全て全角数字で記入してください。', test:function(el){if(el.value.length == 0) return true; else return el.get('value').test(/^[0-9]+$/,'i');} } ], ['isZAlp', { errorMsg:'全て全角英数字で記入してください。', test:function(el){if(el.value.length == 0) return true; else return el.get('value').test(/^[0-9A-Z]+$/,'i');} } ], ['isKana', { errorMsg:'カタカナもしくはひらがなで記入してください。', test:function(el){if(el.value.length == 0) return true; else return el.get('value').test(/^[ア-ンあ-ん]+$/,'i');} } ], ['validate-zipcode', { errorMsg:'郵便番号の書式に誤りがあります。', test:function(el){if(el.value.length == 0) return true; else return el.get('value').test(/(^\d{3}\-\d{4}$)|(^\d{7}$)/);} } ], ['validate-tel', { errorMsg:'電話番号の書式に誤りがあります。', test:function(el){ var value = el.get('value'); if(value.length == 0) return true; if(el.get('value').test("-")){ if(value.test(/^(090|080|070)/)){ return value.test(/(^(090|080|070)(\-\d{4}\-\d{4})$)|(^[\d\-]{13}$)/); }else if(value.test(/^(0080|0120)/)){ return value.test(/(^0120(\-\d{2,3}\-\d{3,4}|[\d\-]{12})$)|(^0080\-\d{3}\-\d{4}$)/); }else{ return value.test(/(^\d{2,5}?\-\d{1,4}?\-\d{4}$|^[\d\-]{12}$)/); } }else{ if(value.test(/^(090|080|070)/)){ return value.test(/^(090|080|070)\d{8}$/); }else if(value.test(/^(0080|0120)/)){ return value.test(/(^0120\d{6}$)|(^0080\d{7}$)/); }else{ return value.test(/^\d{10}$/); } } } } ] ]);
電話番号の正規表現修正