日期:2014-05-16  浏览次数:20321 次

封装自己的js工具_Form

web工程,需要不断的与表单打交道,每次我们都需要对表单进行一下必要的验证,以减小或阻止某些脏数据,这个时候如果我们把一些常用的表单操作组装成类,日后用的话就方便多了

===================================

/**Form对象
封装了常用表单操作,
Form.isChinese(str);验证str是否为中文
Form.urlEncode(str);url编码
Form.getFormElements(formid); 获取表单的元素数组
最常用的方法
Form.getForm(formid); 获取表单的数据字符串
*/

var Form=function(){   
//中文   
this.isChinese=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.length;   
var sLen=str.match(/\W+/g).join('').length;   
var r1=len<8?1:len>8&&len<14?2:len>14&&len<21?3:len>21&&len<28?4:5;   
var r2=sLen>1&&sLen<2?1:sLen>2&&sLen<4?2:sLen>4&&sLen<6?3:sLen>6&&sLen<8?4:5;   
return Math.ceil((r1+r2)/2);   
}   
//获取表单内部元素   
this.getFormElements=function(form){   
var elements=[];   
var params= form.elements;   
for(var i=0;i<params.length;i++){   
var param=params[i];   
var type=param.type;   
if(type!=""&&type!="button"&&type!="reset" && type!="submit"){//非按钮,非图片域   
elements.push(param);   
}   
}   
return elements;   
}   
/*获取表单数据  
1>非空验证  
2>中文加密,服务端用utf-8解密  
form's id ,选项格式如下  
var opts={nameIdError:"表单元素必须有name或id",valueError:"值为空"};  
@result: 为请求字符串格式, 如?query=abc  
用法:  
var opts={nameIdError:"name id error",valueError:"value error"};  
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="表单元素必须有name或id";   
var defValueErr="值为空";   
var params=[];//参数数组   
var err={};//异常对象   
var elements=this.getFormElements(form);   
for(var i=0;i<elements.length;i++){   
var element=elements[i];   
var value=element.value;   
var name=element.name?element.name:element.id;   
if(!name){   
err["target"]=element;   
defNameErr+="["+element+"]";   
nameIdError+="["+element+"]";   
err["message"]=!options?defNameErr:options.nameIdError?options.nameIdError:defNameErr;   
}else if(!value){   
err["target"]=element;   
defValueErr+="["+element+"]";   
options.valueError+="["+element+"]";   
err["message"]=!options?defValueErr:options.valueError?options.valueError:defValueErr;   
}   
if(err["target"]){   
throw err;   
}   
if(this.isChinese(value)){   
value=this.urlEncode(value);   
}   
params.push(name+"="+value);   
}   
return params.join("&");   
}   
};  
?