封装自己的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("&");
 }
};

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

gamebox1

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值