自己的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 类
Nov 07 Javascript
jQuery的实现原理的模拟代码 -1 核心部分
Aug 01 Javascript
js查找某元素中的所有图片地址的方法
Jan 16 Javascript
JavaScript数据结构与算法之栈详解
Mar 12 Javascript
jQuery实现表格行上移下移和置顶的方法
May 22 Javascript
Angular2学习笔记——详解NgModule模块
Dec 02 Javascript
jQuery中layer分页器的使用
Mar 13 Javascript
JavaScript的级联函数用法简单示例【链式调用】
Mar 26 Javascript
layui table复选框禁止某几条勾选的实例
Sep 20 Javascript
vue中el-input绑定键盘按键(按键修饰符)
Jul 22 Javascript
js实现限定范围拖拽的示例
Oct 26 Javascript
vue 中的动态传参和query传参操作
Nov 09 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单件模式结合命令链模式使用说明
2008/09/07 PHP
destoon找回管理员密码的方法
2014/06/21 PHP
Alliance vs Liquid BO3 第三场2.13
2021/03/10 DOTA
javascript 常用关键字列表集合
2007/12/04 Javascript
jQuery EasyUI API 中文文档 - Menu菜单
2011/10/03 Javascript
jquery操作checkbox示例分享
2014/07/21 Javascript
JS简单实现多级Select联动菜单效果代码
2015/09/06 Javascript
JS+CSS实现类似QQ好友及黑名单效果的树型菜单
2015/09/22 Javascript
jQuery mobile类库使用时加载导航历史的方法简介
2015/12/04 Javascript
基于JavaScript实现购物网站商品放大镜效果
2016/09/06 Javascript
Vue响应式添加、修改数组和对象的值
2017/03/20 Javascript
jQuery插件FusionCharts实现的MSBar2D图效果示例【附demo源码】
2017/03/24 jQuery
jquery.validate表单验证插件使用详解
2017/06/21 jQuery
使用mock.js随机数据和使用express输出json接口的实现方法
2018/01/07 Javascript
jQuery实现标签子元素的添加和赋值方法
2018/02/24 jQuery
解决vue中post方式提交数据后台无法接收的问题
2018/08/11 Javascript
详解jQuery中的easyui
2018/09/02 jQuery
Node.js 使用request模块下载文件的实例
2018/09/05 Javascript
vue-cli整合vuex的时候,修改actions和mutations,实现热部署的方法
2018/09/19 Javascript
js验证身份证号码记录的方法
2019/04/26 Javascript
vue实现多组关键词对应高亮显示功能
2019/07/25 Javascript
JS实现音乐导航特效
2020/01/06 Javascript
[04:44]显微镜下的DOTA2第二期——你所没有注意到的细节
2014/06/20 DOTA
[05:26]TI10典藏宝瓶套装外观展示
2020/07/03 DOTA
python中使用百度音乐搜索的api下载指定歌曲的lrc歌词
2014/07/18 Python
Python多进程库multiprocessing中进程池Pool类的使用详解
2017/11/24 Python
python opencv设置摄像头分辨率以及各个参数的方法
2018/04/02 Python
Flask框架钩子函数功能与用法分析
2019/08/02 Python
Python3合并两个有序数组代码实例
2020/08/11 Python
python连接mysql数据库并读取数据的实现
2020/09/25 Python
python 基于wx实现音乐播放
2020/11/24 Python
Jupyter Notebook 远程访问配置详解
2021/01/11 Python
医药公司采购员岗位职责
2014/09/12 职场文书
辞职信格式范文
2015/05/13 职场文书
2015暑期工社会实践报告
2015/07/13 职场文书
导游词之新疆-喀纳斯
2019/10/10 职场文书