自己的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游戏开发之《三国志曹操传》零部件开发(三)情景对话中仿打字机输出文字
Jan 23 Javascript
限制textbox或textarea输入字符长度的JS代码
Oct 16 Javascript
javascript实现信息的显示和隐藏如注册页面
Dec 03 Javascript
详解Javascript 装载和执行
Nov 17 Javascript
利用AJAX实现WordPress中的文章列表及评论的分页功能
May 17 Javascript
Angular企业级开发——MVC之控制器详解
Feb 20 Javascript
简单实现AngularJS轮播图效果
Apr 10 Javascript
详谈js遍历集合(Array,Map,Set)
Apr 06 Javascript
基于vue+ bootstrap实现图片上传图片展示功能
May 17 Javascript
浅谈Vue数据绑定的原理
Jan 08 Javascript
微信小程序用户信息encryptedData详解
Aug 24 Javascript
Vue.js构建你的第一个包并在NPM上发布的方法步骤
May 01 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
解析Ubuntu下crontab命令的用法
2013/06/24 PHP
php将图片文件转换成二进制输出的方法
2015/06/10 PHP
一个简单安全的PHP验证码类、PHP验证码
2016/09/24 PHP
如何重写Laravel异常处理类详解
2020/12/20 PHP
jquery的ajax从纯真网(cz88.net)获取IP地址对应地区名
2009/12/02 Javascript
javascript 延迟加载技术(lazyload)简单实现
2011/01/17 Javascript
AngularJS + Node.js + MongoDB开发的基于高德地图位置的通讯录
2015/01/02 Javascript
window.onload与$(document).ready()的区别分析
2015/05/30 Javascript
Bootstrap每天必学之导航条
2015/11/27 Javascript
ionic2屏幕适配实现适配手机、平板等设备的示例代码
2017/08/11 Javascript
使用vue制作FullPage页面滚动效果
2017/08/21 Javascript
JS实现不用中间变量temp 实现两个变量值得交换方法
2018/02/04 Javascript
React 组件渲染和更新的实现代码示例
2019/02/21 Javascript
Vuex 模块化使用详解
2019/07/31 Javascript
Vue 实现显示/隐藏层的思路(加全局点击事件)
2019/12/31 Javascript
封装 axios+promise通用请求函数操作
2020/08/11 Javascript
vue form表单post请求结合Servlet实现文件上传功能
2021/01/22 Vue.js
[19:24]DOTA2客户端使用指南 一分钟快速设置轻松超神
2013/09/24 DOTA
Python设置默认编码为utf8的方法
2016/07/01 Python
Python3实现抓取javascript动态生成的html网页功能示例
2017/08/22 Python
教你用Python写安卓游戏外挂
2018/01/11 Python
python实现生命游戏的示例代码(Game of Life)
2018/01/24 Python
python的concat等多种用法详解
2018/11/28 Python
Python神奇的内置函数locals的实例讲解
2019/02/22 Python
pyqt5利用pyqtDesigner实现登录界面
2019/03/28 Python
使用css3做0.5px的细线的示例代码
2018/01/18 HTML / CSS
世界上最好的儿童品牌:AlexandAlexa
2018/01/27 全球购物
Fabletics官网:美国运动服饰品牌,由好莱坞女演员凯特·哈德森创立
2019/10/19 全球购物
幼儿园消防安全制度
2014/01/26 职场文书
初中中等生评语
2014/12/29 职场文书
2015毕业寄语大全
2015/02/26 职场文书
信访工作个人总结
2015/03/03 职场文书
2019年最新证婚词精选集!
2019/06/28 职场文书
《语言的突破》读后感3篇
2019/12/12 职场文书
MySQL空间数据存储及函数
2021/09/25 MySQL
springboot layui hutool Excel导入的实现
2022/03/31 Java/Android