自己的js工具_Form 封装

复制代码 代码如下:

  /**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("&");

  }

  };