自己的js工具_Form 封装


Posted in Javascript onAugust 21, 2009
/**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("&"); 
} 
};
Javascript 相关文章推荐
游戏人文件夹程序 ver 3.0
Jul 14 Javascript
jquery的键盘事件修改代码
Feb 24 Javascript
体验js中splice()的强大(插入、删除或替换数组的元素)
Jan 16 Javascript
jQuery 文本框得失焦点的简单实例
Feb 19 Javascript
详解jQuery中的deferred对象的使用(一)
May 27 Javascript
jQuery Easyui datagrid/treegrid 清空数据
Jul 09 Javascript
jQuery开源组件BootstrapValidator使用详解
Jun 29 jQuery
基于vue配置axios的方法步骤
Nov 09 Javascript
zTree节点文字过多的处理方法
Nov 24 Javascript
Angular6使用forRoot() 注册单一实例服务问题
Aug 27 Javascript
通过GASP让vue实现动态效果实例代码详解
Nov 24 Javascript
JS原型prototype和__proto__用法实例分析
Mar 14 Javascript
javascript 面向对象编程基础 多态
Aug 21 #Javascript
javascript 面向对象编程基础:继承
Aug 21 #Javascript
javascript 面向对象编程基础:封装
Aug 21 #Javascript
javascript arguments 传递给函数的隐含参数
Aug 21 #Javascript
javascript 自定义事件初探
Aug 21 #Javascript
IE 下的只读 innerHTML
Aug 21 #Javascript
JS 控制CSS样式表
Aug 20 #Javascript
You might like
php 文件夹删除、php清除缓存程序
2009/08/25 PHP
thinkphp3.x中display方法及show方法的用法实例
2016/05/19 PHP
PHP实现的mongoDB数据库操作类完整实例
2018/04/10 PHP
JavaScript中this关键字使用方法详解
2007/03/08 Javascript
JavaScript 不只是脚本
2007/05/30 Javascript
提升PHP安全:8个必须修改的PHP默认配置
2014/11/17 Javascript
javascript简单实现图片预加载
2014/12/03 Javascript
基于jquery实现左右按钮点击的图片切换效果
2021/01/27 Javascript
每天一篇javascript学习小结(RegExp对象)
2015/11/17 Javascript
移动端横屏的JS代码(beta)
2016/05/16 Javascript
Vue.js 表单校验插件
2016/08/14 Javascript
基于Javascript实现文件实时加载进度的方法
2016/10/12 Javascript
浅谈angularjs中响应回车事件
2017/04/24 Javascript
浅谈如何使用 webpack 优化资源
2017/10/20 Javascript
Angular2的管道Pipe的使用方法
2017/11/07 Javascript
详解vue指令与$nextTick 操作DOM的不同之处
2018/08/02 Javascript
JS中==、===你分清楚了吗
2020/03/04 Javascript
基于python历史天气采集的分析
2019/02/14 Python
Python自动化之数据驱动让你的脚本简洁10倍【推荐】
2019/06/04 Python
Python Pandas数据结构简单介绍
2019/07/03 Python
PyTorch 普通卷积和空洞卷积实例
2020/01/07 Python
Python内建序列通用操作6种实现方法
2020/03/26 Python
从零开始的TensorFlow+VScode开发环境搭建的步骤(图文)
2020/08/31 Python
简述python&amp;pytorch 随机种子的实现
2020/10/07 Python
心得体会开头
2014/01/01 职场文书
还款承诺书范文
2014/05/20 职场文书
国际语言毕业生求职信
2014/07/08 职场文书
2014最新房贷收入证明范本
2014/09/12 职场文书
成本会计岗位职责
2015/02/03 职场文书
2015年事业单位办公室文员工作总结
2015/04/24 职场文书
升学宴家长致辞
2015/07/27 职场文书
母亲节感言
2015/08/03 职场文书
小学教师教育随笔
2015/08/14 职场文书
导游词之西递宏村
2019/12/10 职场文书
未发现nvidia显卡怎么办?Win11系统中未检测到nvidia显卡解决教程
2022/04/08 数码科技
docker compose 部署 golang 的 Athens 私有代理问题
2022/04/28 Servers