Home > MooTools > [MooTools] Form.Validator.addAllThese for Japanese

[MooTools] Form.Validator.addAllThese for Japanese

MooToolsのForm.Validatorの足りないところを補う日本語環境向けaddAllThese。中身は殆どzeromailからの転載。
全角チェック、全てひらがな、全てカタカナ、全て全角数字、全て全角英数、日本語の有無、郵便番号、電話番号。
続きに郵便番号検索APIとの連携例と、Form.Validatorを搭載したメールフォームのデモがあります。

JavaScript:
  1. Form.Validator.addAllThese([
  2.     ['isJpOnly',
  3.         {
  4.             errorMsg:'全て半角英数の文字列は使用できません。',
  5.             test: function(el){if(el.value.length == 0) return true; else return !el.get('value').test(/^[\x01-\x7e]+$/,'i');}
  6.         }
  7.     ],
  8.     ['isNoAlp',
  9.         {
  10.             errorMsg:'全て全角で記入してください。',
  11.             test:function(el){if(el.value.length == 0) return true; else return el.get('value').test(/^[^ -~。-゚]*$/);}
  12.         }
  13.     ],
  14.     ['isHirakana',
  15.         {
  16.             errorMsg:'全てひらがなで記入してください。',
  17.             test:function(el){if(el.value.length == 0) return true; else return el.get('value').test(/^[あ-ん]+$/,'i');}
  18.         }
  19.     ],
  20.     ['isKatakana',
  21.         {
  22.             errorMsg:'全てカタカナで記入してください。',
  23.             test:function(el){if(el.value.length == 0) return true; else return el.get('value').test(/^[ア-ン]+$/,'i');}
  24.         }
  25.     ],
  26.     ['isZNum',
  27.         {
  28.             errorMsg:'全て全角数字で記入してください。',
  29.             test:function(el){if(el.value.length == 0) return true; else return el.get('value').test(/^[0-9]+$/,'i');}
  30.         }
  31.     ],
  32.     ['isZAlp',
  33.         {
  34.             errorMsg:'全て全角英数字で記入してください。',
  35.             test:function(el){if(el.value.length == 0) return true; else return el.get('value').test(/^[0-9A-Z]+$/,'i');}
  36.         }
  37.     ],
  38.     ['isKana',
  39.         {
  40.             errorMsg:'カタカナもしくはひらがなで記入してください。',
  41.             test:function(el){if(el.value.length == 0) return true; else return el.get('value').test(/^[ア-ンあ-ん]+$/,'i');}
  42.         }
  43.     ],
  44.     ['validate-zipcode',
  45.         {
  46.             errorMsg:'郵便番号の書式に誤りがあります。',
  47.             test:function(el){if(el.value.length == 0) return true; else return el.get('value').test(/(^\d{3}\-\d{4}$)|(^\d{7}$)/);}
  48.         }
  49.     ],
  50.     ['validate-tel',
  51.         {
  52.             errorMsg:'電話番号の書式に誤りがあります。',
  53.             test:function(el){
  54.                 var value = el.get('value');
  55.                 if(value.length == 0) return true;
  56.                
  57.                 if(el.get('value').test("-")){
  58.                     if(value.test(/^(090|080|070)/)){
  59.                         return value.test(/(^(090|080|070)(\-\d{4}\-\d{4})$)|(^[\d\-]{13}$)/);
  60.                     }else if(value.test(/^(0080|0120)/)){
  61.                         return value.test(/(^0120(\-\d{2,3}\-\d{3,4}|[\d\-]{12})$)|(^0080\-\d{3}\-\d{4}$)/);
  62.                     }else{
  63.                         return value.test(/(^\d{2,5}?\-\d{1,4}?\-\d{4}$|^[\d\-]{12}$)/);
  64.                     }
  65.                 }else{
  66.                     if(value.test(/^(090|080|070)/)){
  67.                         return value.test(/^(090|080|070)\d{8}$/);
  68.                     }else if(value.test(/^(0080|0120)/)){
  69.                         return value.test(/(^0120\d{6}$)|(^0080\d{7}$)/);
  70.                     }else{
  71.                         return value.test(/^\d{10}$/);
  72.                     }
  73.                 }
  74.             }
  75.         }
  76.     ]
  77. ]);

電話番号の正規表現修正

郵便番号検索との連携

バリデータをクリアしたら郵便番号検索APIにリクエストを送信して住所を表示する。
APIは大抵JSONPなのでMoreのRequest.JSONPが必要。
下記サンプルはここの郵便番号検索APIを利用した場合のソースです。

HTMLはZeroMailのメールフォームから一部抜粋。

HTML:
  1.     <th scope="row"><label id="zipcode">郵便番号</label></th>
  2.     <td><input name="zipcode" type="text" id="zipcode" size="50" tabindex="4" class="validate-zipcode" /></td>
  3. </tr>
  4.     <th scope="row"><label for="address">住所</label></th>
  5.     <td><input name="address" type="text" id="address" size="50" tabindex="5" /></td>
  6. </tr>
JavaScript:
  1. ['validate-zipcode',
  2.     {
  3.         errorMsg:'郵便番号の書式に誤りがあります。',
  4.         test:function(el){
  5.             if(el.value.length == 0){ return true;
  6.             }else if(el.get('value').test(/(^\d{3}\-\d{4}$)|(^\d{7}$)/)){
  7.                 new Request.JSONP({
  8.                       noCache:true,
  9.                       url: 'http://zipcloud.ibsnet.co.jp/api/search?zipcode='+el.get("value")+"&callback=Request.JSONP.request_map.request_0",
  10.                       onRequest:function(){
  11.                           $$(".address-box").fade(0.3).setProperty('readonly','readonly');
  12.                       },
  13.                       onComplete: function(obj){
  14.                           if($type(obj.results)=="array")
  15.                             $$(".address-box").set("value",obj.results[0].address1+obj.results[0].address2+obj.results[0].address3).removeProperty('readonly').fade(1);
  16.                           else
  17.                             $$(".address-box").fade(1).removeProperty('readonly');
  18.                       }
  19.                     }).send();
  20.                 return true;
  21.             }
  22.         }
  23.     }
  24. ]

メールフォームへの実装例

CSSとXHTMLはZeroMailのデフォルトのやつです。

このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加このエントリをLivedoor Clipに追加このエントリをYahoo!ブックマークに追加このエントリをFC2ブックマークに追加このエントリをNifty Clipに追加このエントリをPOOKMARK. Airlinesに追加このエントリをBuzzurl(バザール)に追加このエントリをChoixに追加このエントリをnewsingに追加

Comments:0

Comment Form
Remember personal info

Trackbacks:0

Trackback URL for this entry
http://tenderfeel.xsrv.jp/mootools/768/trackback/
Listed below are links to weblogs that reference
[MooTools] Form.Validator.addAllThese for Japanese from WebTecNote

Home > MooTools > [MooTools] Form.Validator.addAllThese for Japanese

最近の投稿
最近の修正
  • そしてこのSQLはわれながらよく書いたと思う 2010-11-15
  • CSVの列っていう方がいいのかな…118項目だった 2010-11-15
  • 楽天のCSVの項目が116個もあった衝撃 2010-11-15
  • オフィスで香水臭振りまくのは迷惑だと知れ 2010-11-15
  • ぐあー フレグランステロやー 2010-11-15
  • More updates...

Powered by Twitter Tools

Tag Cloud
おすすめサーバー・他
メタ情報

Return to page top