自己的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 相关文章推荐
对象特征检测法判断浏览器对javascript对象的支持
Jul 25 Javascript
使用jquery实现简单的ajax
Jul 08 Javascript
js 删除数组的几种方法小结
Feb 21 Javascript
JavaScript函数详解
Nov 17 Javascript
如何使用HTML5地理位置定位功能
Apr 27 Javascript
jq实现左侧显示图片右侧文字滑动切换效果
Aug 04 Javascript
js实现简单的省市县三级联动效果实例
Feb 18 Javascript
Javascript获取background属性中url的值
Oct 17 Javascript
VueJs 将接口用webpack代理到本地的方法
Nov 27 Javascript
JS中this的指向以及call、apply的作用
May 06 Javascript
详解JS取出两个数组中的不同或相同元素
Mar 20 Javascript
浅谈TypeScript 用 Webpack/ts-node 运行的配置记录
Oct 11 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&amp;&amp;mysql)三
2006/10/09 PHP
PHP iconv 函数转gb2312的bug解决方法
2009/10/11 PHP
PHP foreach循环使用详解与实例代码
2010/05/08 PHP
Discuz!下Memcache缓存实现方法
2010/05/28 PHP
php结合ACCESS的跨库查询功能
2015/06/12 PHP
用PHP代码在网页上生成图片
2015/07/01 PHP
PHP7中I/O模型内核剖析详解
2019/04/14 PHP
Ext中下拉列表ComboBox组件store数据格式用法介绍
2013/07/15 Javascript
js获取光标位置和设置文本框光标位置示例代码
2014/01/09 Javascript
js实现键盘操作实现div的移动或改变的原理及代码
2014/06/23 Javascript
详谈nodejs异步编程
2014/12/04 NodeJs
jQuery操作JSON的CRUD用法实例
2015/02/25 Javascript
Js与Jq 获取页面元素值的方法和差异对比
2015/04/30 Javascript
JQuery中Ajax()的data参数类型实例分析
2015/12/15 Javascript
动态加载js文件简单示例
2016/04/21 Javascript
js原生之焦点图转换加定时器实例
2016/12/12 Javascript
js 原型对象和原型链理解
2017/02/09 Javascript
vuejs+element-ui+laravel5.4上传文件的示例代码
2017/08/12 Javascript
react-navigation 如何判断用户是否登录跳转到登录页的方法
2017/12/01 Javascript
Vue插件打包与发布的方法示例
2018/08/20 Javascript
javascript数组的定义及操作实例
2019/11/10 Javascript
JavaScript获取时区实现过程解析
2020/09/24 Javascript
js实现详情页放大镜效果
2020/10/28 Javascript
[00:35]DOTA2上海特级锦标赛 Newbee战队宣传片
2016/03/03 DOTA
python3实现短网址和数字相互转换的方法
2015/04/28 Python
Python 3.x 连接数据库示例(pymysql 方式)
2017/01/19 Python
Django实现的自定义访问日志模块示例
2017/06/23 Python
详解tensorflow训练自己的数据集实现CNN图像分类
2018/02/07 Python
对Python信号处理模块signal详解
2019/01/09 Python
Python中捕获键盘的方式详解
2019/03/28 Python
Python基于pyecharts实现关联图绘制
2020/03/27 Python
Python使用shutil模块实现文件拷贝
2020/07/31 Python
美国LOGO设计公司:The Logo Company
2018/07/16 全球购物
《郑和远航》教学反思
2014/04/16 职场文书
社区服务活动小结
2014/07/08 职场文书
2019年感恩励志演讲稿(收藏备用)
2019/09/11 职场文书