FormValidate 表单验证功能代码更新并提供下载


Posted in Javascript onAugust 23, 2008

FormValidate 功能更新

下载:
http://xiazai.3water.com/jslib/FormValidate.rar

更多用法,可参才:

http://jobj.googlecode.com/svn/trunk/FormValidate/demo.html

加入方法:
extend,
加入验证模式 4,同3,但是当验证不通过时,立即停止向下检查。在模式3下,如果发生错误,会把错误记录,并向下检查,模式4就不向下检查了。

用法:

<input type="text" name="name[0]" id="name[0]" ruleTpl="0" />
<input type="text" name="birthday[0]" id="birthday[0]" ruleTpl="1" />
。。。。。
。。。。。
var checkRule = [
{name:"name[0]", required:true, min:2, max:3, msg:"请输入姓名!长度必须大于2,小于3"},
{name:"birthday[0]",required:false, type:"Date", msg:"出生日期是可选项,如果输入,请输入正确的日期"},
{name:"email[0]", required:false, type:"Email", msg:"邮件是可选项,如果输入,请输入正确的邮件地址"},
{name:"scoreA[0]", required:true, type:"Num", min:0, max:100, msg:"语文分数是必须项,必须大于0小于100"},
{name:"scoreB[0]", required:true, type:"Num", min:0, max:100, msg:"数学分数是必须项,必须大于0小于100"},
{name:"scoreC[0]", required:true, type:"Num", min:0, max:100, msg:"英语分数是必须项,必须大于0小于100"}
];

JObj.plugin("FormValidate");
var va = JObj.Plugin.FormValidate;

va.extend(document.forms[0],"ruleTpl",checkRule);
return va.validate(document.forms[0],checkRule,4);

解释:
为啥要这样写?
如果不动态添加表单项,可以把 va.extend这一句删除。但是动态添加表单项的话。。。新增的表单项无法指定。
这样写,就是跟据 ruleTpl 所指定的为验证规则。这个 ruleTpl可以是任何字符串(不是它的值),比如,如果把 ruleTpl换成 ttt,那么就要写成:
va.extend(document.forms[0],'ttt',checkRule)
ruleTpl 是做为表单项的一个自定义 attribute 存在的,其值必须是 checkRule 的一个下标,如果这个下标不存,则默认不检查这一项。否则就把选定的 checkRule的元素复制一遍,达到动态添加验证规则的目的。

在添加这个功能的时候,遇到几个有趣的问题,下面我说说:

1,地址引用,请不要运行,说出下面代码中,变量 a 的值。

var a = [{name:1}];
var tmp = a.push(a[a.length - 1]);
a[tmp - 1].name = 2;
如果你说:a = [{name:1},{name:2}],那你就大错特错了,真实值是:
a = [{name:2},{name:2}];

原因很简单,因为 push的是一个对象,对象在JS里是地址引用,所以, a[tmp - 1].name = 2 的时候,其实是把 a[0] 的值改变了。

下面这一段就很简单了,值引用,不会发生上面的情况。

var a = [1,2,3];
a.push(a[a.length - 1]);
alert(a);
a[a.length - 1] = 4;
alert(a);
2,FF下动态删除表单项。
如果动态删除了某个表单项,不 alert 的话, form['itemName']还是那个被删除的 表单项。
这时,它的 parentNode,form 都为 null,但是却不能用 parentNode == null 来判断,不知道为啥,FF真是另人***,为了完成功能,只好用 item.form == null来判断,如:

if (obj == undefined || obj.form == null) return null;

IE则不存这个问题。

Javascript 相关文章推荐
jQuery获取样式中颜色值的方法
Jan 29 Javascript
究竟什么是Node.js?Node.js有什么好处?
May 29 Javascript
JS实现弹性菜单效果代码
Sep 07 Javascript
jQuery+PHP星级评分实现方法
Oct 02 Javascript
JS组件系列之Bootstrap Icon图标选择组件
Jan 28 Javascript
详解javascript跨浏览器事件处理程序
Mar 27 Javascript
javascript的replace方法结合正则使用实例总结
Jun 16 Javascript
深入分析javascript中console命令
Aug 14 Javascript
Bootstrap字体图标无法正常显示的解决方法
Oct 08 Javascript
Bootstrap CSS布局之代码
Dec 17 Javascript
JavaScript碰撞检测原理及其实现代码
Mar 12 Javascript
JavaScript面试中常考的字符串操作方法大全(包含ES6)
May 10 Javascript
Javascript 篱式条件判断
Aug 22 #Javascript
解决AJAX中跨域访问出现'没有权限'的错误
Aug 20 #Javascript
javascript:void(0)的真正含义实例分析
Aug 20 #Javascript
利用404错误页面实现UrlRewrite的实现代码
Aug 20 #Javascript
一些不错的js函数ajax
Aug 20 #Javascript
jQuery formValidator表单验证插件开源了 含API帮助、源码、示例
Aug 14 #Javascript
jquery之Document元素选择器篇
Aug 14 #Javascript
You might like
MySQL的FIND_IN_SET函数使用方法分享
2012/03/27 PHP
Laravle eloquent 多对多模型关联实例详解
2017/11/22 PHP
ExtJS 2.0实用简明教程之应用ExtJS
2009/04/29 Javascript
jquery ajax 检测用户注册时用户名是否存在
2009/11/03 Javascript
Tips 带三角可关闭的文字提示
2010/10/06 Javascript
基于JQuery的日期联动实现代码
2011/02/24 Javascript
jQuery EasyUI API 中文文档 - Pagination分页
2011/09/29 Javascript
jQuery实用函数用法总结
2014/08/29 Javascript
一个JavaScript用逗号分割字符串实例
2014/09/22 Javascript
jquery实现导航固定顶部的效果仿蘑菇街
2014/10/22 Javascript
node.js中的path.join方法使用说明
2014/12/08 Javascript
Backbone.js中的集合详解
2015/01/14 Javascript
Vue.js每天必学之过滤器与自定义过滤器
2016/09/07 Javascript
JS定时检测任务任务完成后执行下一步的解决办法
2016/12/22 Javascript
解决BootStrap Fileinput手机图片上传显示旋转问题
2017/06/01 Javascript
React Native实现地址挑选器功能
2017/10/24 Javascript
Vue完整项目构建(进阶篇)
2018/02/10 Javascript
webpack 静态资源集中输出的方法示例
2018/11/09 Javascript
[06:04]DOTA2英雄梦之声Vol19卓尔游侠
2014/06/20 DOTA
Python的Django框架中从url中捕捉文本的方法
2015/07/20 Python
Python从单元素字典中获取key和value的实例
2018/12/31 Python
关于Python形参打包与解包小技巧分享
2019/08/24 Python
学python安装的软件总结
2019/10/12 Python
python 导入数据及作图的实现
2019/12/03 Python
高中毕业生自我鉴定
2013/11/03 职场文书
理工科学生的自我评价
2013/12/15 职场文书
报到证丢失证明
2014/01/11 职场文书
起诉离婚协议书样本
2014/11/25 职场文书
2015年七一建党节活动总结
2015/03/20 职场文书
哈姆雷特读书笔记
2015/06/29 职场文书
2015暑假假期总结
2015/07/13 职场文书
公司晚会主持词
2019/04/17 职场文书
创业计划书之农家乐
2019/10/09 职场文书
如何避免mysql启动时错误及sock文件作用分析
2022/01/22 MySQL
详解Go语言中Get/Post请求测试
2022/06/01 Golang
蓝牙耳机怎么连接电脑win11? Win11蓝牙耳机连接电脑的技巧
2023/01/09 数码科技