自己的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 相关文章推荐
js tab效果的实现代码
Dec 26 Javascript
javascript操作JSON的要领总结
Dec 09 Javascript
调用DOM对象的focus使文本框获得焦点
Feb 19 Javascript
JavaScript插件化开发教程(六)
Feb 01 Javascript
jQuery实现的网格线绘制方法
Jun 20 Javascript
浅析Bootstrap验证控件的使用
Jun 23 Javascript
轻松掌握JavaScript装饰者模式
Aug 27 Javascript
vue.js加载新的内容(实例代码)
Jun 01 Javascript
Angularjs 事件指令详细整理
Jul 27 Javascript
浅析Visual Studio Code断点调试Vue
Feb 27 Javascript
vue实现pdf文档在线预览功能
Nov 26 Javascript
JavaScript变量Dom对象的所有属性
Apr 30 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生成静态页面详解
2006/11/19 PHP
Breeze 文章管理系统 v1.0.0正式发布
2006/12/14 PHP
PHP 字符截取 解决中文的截取问题,不用mb系列
2009/09/29 PHP
php实现网站顶踩功能的完整前端代码
2015/07/19 PHP
利用PHPExcel读取Excel的数据和导出数据到Excel
2017/05/12 PHP
快速保存网页中所有图片的方法
2006/06/23 Javascript
javascript时区函数介绍
2012/09/14 Javascript
解决jQuery动态获取手机屏幕高和宽的问题
2014/05/07 Javascript
node.js中的buffer.toJSON方法使用说明
2014/12/14 Javascript
jQuery中on()方法用法实例详解
2015/02/06 Javascript
浅谈javascript的Touch事件
2015/09/27 Javascript
微信小程序 教程之wxapp视图容器 scroll-view
2016/10/19 Javascript
Bootstrap基本样式学习笔记之标签(5)
2016/12/07 Javascript
JS中Swiper的使用和轮播图效果
2017/08/11 Javascript
JS沙箱模式实例分析
2017/09/04 Javascript
Angular 开发学习之Angular CLI的安装使用
2017/12/31 Javascript
vue19 组建 Vue.extend component、组件模版、动态组件 的实例代码
2019/04/04 Javascript
Vue+Java 通过websocket实现服务器与客户端双向通信操作
2020/09/22 Javascript
[02:51]2014DOTA2 TI小组赛总结中国军团全部进军钥匙球馆
2014/07/15 DOTA
Python中用于转换字母为小写的lower()方法使用简介
2015/05/19 Python
对Python3中dict.keys()转换成list类型的方法详解
2019/02/03 Python
centos6.5安装python3.7.1之后无法使用pip的解决方案
2019/02/14 Python
详解基于python的多张不同宽高图片拼接成大图
2019/09/26 Python
VSCode中自动为Python文件添加头部注释
2019/11/14 Python
python使用opencv在Windows下调用摄像头实现解析
2019/11/26 Python
Python操控mysql批量插入数据的实现方法
2020/10/27 Python
python3代码中实现加法重载的实例
2020/12/03 Python
python 基于opencv操作摄像头
2020/12/24 Python
linux面试题参考答案(1)
2016/01/22 面试题
2015年安全生产月活动总结
2015/03/26 职场文书
2016年七夕情人节宣传语
2015/11/25 职场文书
教师廉政准则心得体会
2016/01/20 职场文书
Golang 编译成DLL文件的操作
2021/05/06 Golang
用Python爬取英雄联盟的皮肤详细示例
2021/12/06 Python
青岛市的收音机研制与生产
2022/04/07 无线电
Vue router配置与使用分析讲解
2022/12/24 Vue.js