自己的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 相关文章推荐
document.designMode的功能与使用方法介绍
Nov 22 Javascript
Angular外部使用js调用Angular控制器中的函数方法或变量用法示例
Aug 05 Javascript
Javascript点击按钮随机改变数字与其颜色
Sep 01 Javascript
Javascript实现图片懒加载插件的方法
Oct 20 Javascript
Extjs让combobox写起来简洁又漂亮
Jan 05 Javascript
JS中type=&quot;button&quot;和type=&quot;submit&quot;的区别
Jul 04 Javascript
js+html5生成自动排列对话框实例
Oct 09 Javascript
简单理解Vue中的nextTick方法
Jan 30 Javascript
详解在React中跨组件分发状态的三种方法
Aug 09 Javascript
简单了解vue中父子组件如何相互传递值(基础向)
Jul 12 Javascript
使用Vue-Awesome-Swiper实现旋转叠加轮播效果&amp;平移轮播效果
Aug 16 Javascript
jQuery 筛选器简单操作示例
Oct 02 jQuery
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 getcwd与dirname(__FILE__)区别详解
2016/09/24 PHP
iOS自定义提示弹出框实现类似UIAlertView的效果
2016/11/16 PHP
addRule在firefox下的兼容写法
2006/11/30 Javascript
js动态往表格的td中添加图片并注册事件
2014/06/12 Javascript
使用nodejs、Python写的一个简易HTTP静态文件服务器
2014/07/18 NodeJs
扒一扒JavaScript 预解释
2015/01/28 Javascript
使用开源工具制作网页验证码的方法
2016/10/17 Javascript
jQuery的中 is(':visible') 解析及用法(必看)
2017/02/12 Javascript
Angular中$broadcast和$emit的使用方法详解
2017/05/22 Javascript
JS获取鼠标坐标并且根据鼠标位置不同弹出不同内容
2017/06/12 Javascript
微信小程序Getuserinfo解决方案图解
2018/08/24 Javascript
Angular如何由模板生成DOM树的方法
2019/12/23 Javascript
对vuex中store和$store的区别说明
2020/07/24 Javascript
[03:56]显微镜下的DOTA2第十一期——鬼畜的死亡先知播音员
2014/06/23 DOTA
[10:49]2014国际邀请赛 叨叨刀塔第二期为真正的电竞喝彩
2014/07/21 DOTA
python计算最小优先级队列代码分享
2013/12/18 Python
python实现上传下载文件功能
2020/11/19 Python
Python开发最牛逼的IDE——pycharm
2018/08/01 Python
使用pyinstaller打包PyQt4程序遇到的问题及解决方法
2019/06/24 Python
Tensorflow矩阵运算实例(矩阵相乘,点乘,行/列累加)
2020/02/05 Python
django haystack实现全文检索的示例代码
2020/06/24 Python
详解python中的lambda与sorted函数
2020/09/04 Python
python 进程池pool使用详解
2020/10/15 Python
加拿大最大的相机店:Henry’s
2017/05/17 全球购物
企划经理的岗位职责
2013/11/17 职场文书
初一地理教学反思
2014/01/16 职场文书
加强作风建设演讲稿
2014/10/24 职场文书
婚前保证书范文
2015/02/28 职场文书
党员自我评价范文2015
2015/03/03 职场文书
圣诞晚会主持词
2015/07/01 职场文书
关于开学的感想
2015/08/10 职场文书
廉政党课工作报告案例
2019/06/21 职场文书
为Java项目添加Redis缓存的方法
2021/05/18 Redis
element多个表单校验的实现
2021/05/27 Javascript
MySQL分区表实现按月份归类
2021/11/01 MySQL
vue 把二维或多维数组转一维数组
2022/04/24 Vue.js