/**フォーム オブジェクト
は一般的なフォーム操作をカプセル化します。
Form.is Chinese(str); str が中国語であるかどうかを確認します。
Form.urlEncode(str); フォームを取得します。要素 array
Form.getForm(formid) の最も一般的に使用されるメソッドは、フォームのデータ文字列
を取得します。*/
var Form=function (){
//中国語
this.is Chinese=function(str){
return /[u4e00-u9fa5]/.test(str);
}
//英数字以外のアンダースコア
this.isSpecial=function(str){
return /W/.test(str);
}
//アドレスエンコーディング
this.urlEncode=function(str) ){
return encodeURI(encodeURI(str));
}
//パスワード入力レベル、最大レベル 5
this.checkLevel=function(str){
var len=str.長さ;
var sLen=str.match(/W /g).join('').length;
var r1=len8&<14?2:len> 21?3 :len>21&<28?4:5;
return Math.ceil((r1 r2)/2)
}
// フォームの内部要素を取得しますthis.getFormElements=function(form){
var elements=[] ;
var params= form.elements;
for(var i=0;i
var param=params[i];
var type=param.type
if(type!=""&&type!="button"&&type!="reset" && type!="submit"){ / /非ボタン、非画像ドメイン
elements.push(param);
}
}
要素を返す
}
/*フォーム データを取得します
1> null 以外の検証
2>中国語暗号化、サーバーは utf-8 を使用して
フォーム ID を復号化します。オプションの形式は次のとおりです。
var opts={nameIdError: "フォーム要素には名前または ID が必要です", valueError: "値が空です"};
@result: リクエスト文字列の形式です (例: query=abc
Usage:
var opts={nameIdError:"name ID error", valueError:"値エラー"};
try{
var result = Form.getForm(form,opts) ;
}catch(e){
alert(e.message); e.target.focus();
return;
}
alert(result);
*/
this.getForm=function(form,options){
var defNameErr= "フォーム要素には名前または ID が必要です";
var defValueErr="値が空です";
var params =[];//パラメータ配列
var err={};//例外オブジェクト
var elements=this.getFormElements(form);
for(var i=0;ivar element=elements[i];
var value=element.value ;
var name=element.name?element.name:element.id;
if(!name) {
err["target"]=element; ]";
nameIdError ="[" element "]";
err["message"]=! options?defNameErr:options.nameIdError?options.nameIdError:defNameErr;
}else if(!value ){
err["ターゲット"]=要素;
defValueErr ="[" 要素 "]";
options.valueError ="[" 要素 "]"; ]=!options?defValueErr:options.valueError?options.valueError:defValueErr;
}
if(err ["target"]){
throw
}
if(this .is Chinese(value)){
value=this.urlEncode(value);
params .push(name "=" value);
return params.join(" &");
}
};