自己的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限制文本框只能输入数字(正则表达式)
Jul 15 Javascript
JavaScript中的变量作用域介绍
Dec 31 Javascript
jQuery中removeClass()方法用法实例
Jan 05 Javascript
JavaScript实现将数组数据添加到Select下拉框的方法
Aug 21 Javascript
js行号显示的文本框实现效果(兼容多种浏览器 )
Oct 23 Javascript
JS实现可编辑的后台管理菜单功能【附demo源码下载】
Sep 13 Javascript
微信小程序中的swiper组件详解
Apr 14 Javascript
获取url中用&amp;隔开的参数实例(分享)
May 28 Javascript
详解如何在nuxt中添加proxyTable代理
Aug 10 Javascript
jQuery实现的网站banner图片无缝轮播效果完整实例
Jan 28 jQuery
React Hooks 实现和由来以及解决的问题详解
Jan 17 Javascript
浅谈javascript事件环微任务和宏任务队列原理
Sep 12 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 采集书并合成txt格式的实现代码
2009/03/01 PHP
选择PHP作为网站开发语言的原因分享
2012/01/03 PHP
PHP使用数组实现队列
2012/02/05 PHP
php删除与复制文件夹及其文件夹下所有文件的实现代码
2013/01/23 PHP
php用正则表达式匹配中文实例详解
2013/11/06 PHP
Extjs中ComboBoxTree实现的下拉框树效果(自写)
2013/05/28 Javascript
javascript中直接引用Microsoft的COM生成Word
2014/01/20 Javascript
在jquery中的ajax方法怎样通过JSONP进行远程调用
2014/04/04 Javascript
Javascript基础教程之关键字和保留字汇总
2015/01/18 Javascript
nodejs实现获取当前url地址及url各种参数值
2015/06/25 NodeJs
JavaScript模块规范之AMD规范和CMD规范
2015/10/27 Javascript
JavaScript事件代理和委托详解
2016/04/08 Javascript
详解JavaScript中双等号引起的隐性类型转换
2016/05/30 Javascript
几种二级联动案例(jQuery\Array\Ajax php)
2016/08/13 Javascript
jQuery搜索框效果实现代码(百度关键词联想)
2021/02/25 Javascript
初探nodeJS
2017/01/24 NodeJs
jQuery+ThinkPHP+Ajax实现即时消息提醒功能实例代码
2017/03/21 jQuery
ES6模块化的import和export用法方法总结
2017/08/08 Javascript
深入理解 webpack 文件打包机制(小结)
2018/01/08 Javascript
js实现AI五子棋人机大战
2020/05/28 Javascript
JS中间件设计模式的深入探讨与实例分析
2020/04/11 Javascript
vue接口请求加密实例
2020/08/11 Javascript
pyqt4教程之messagebox使用示例分享
2014/03/07 Python
Python基于pygame实现的font游戏字体(附源码)
2015/11/11 Python
使用实现XlsxWriter创建Excel文件并编辑
2018/05/04 Python
python使用for循环计算0-100的整数的和方法
2019/02/01 Python
详解python中自定义超时异常的几种方法
2019/07/29 Python
django admin 自定义替换change页面模板的方法
2019/08/23 Python
python 基于dlib库的人脸检测的实现
2019/11/08 Python
django 实现手动存储文件到model的FileField
2020/03/30 Python
remote接口和home接口主要作用
2013/05/15 面试题
求职自荐书范文
2013/12/04 职场文书
2015年小学教师培训工作总结
2015/07/21 职场文书
公司业务员管理制度
2015/08/05 职场文书
Go语言操作数据库及其常规操作的示例代码
2021/04/21 Golang
浅谈PostgreSQL表分区的三种方式
2021/06/29 PostgreSQL