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 相关文章推荐
Safari5中alert的无限循环BUG
Apr 07 Javascript
jquery中获取select选中值的代码
Jun 27 Javascript
jQuery插件windowScroll实现单屏滚动特效
Jul 14 Javascript
js淡入淡出焦点图幻灯片效果代码分享
Sep 08 Javascript
jQuery插件jquery-barcode实现条码打印的方法
Nov 25 Javascript
AngularJS定时器的使用与移除操作方法【interval与timeout】
Dec 14 Javascript
angularjs中使用ng-bind-html和ng-include的实例
Apr 28 Javascript
网页爬虫之cookie自动获取及过期自动更新的实现方法
Mar 06 Javascript
jQuery实现模糊查询的方法分析
May 10 jQuery
使用NestJS开发Node.js应用的方法
Dec 03 Javascript
解决vue跨域axios异步通信问题
Apr 17 Javascript
javascript+Canvas实现画板功能
Jun 23 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
PHP 高手之路(三)
2006/10/09 PHP
php递归方法实现无限分类实例代码
2014/02/28 PHP
详解PHP中的外观模式facade pattern
2018/02/05 PHP
PHP 实现手机端APP支付宝支付功能
2018/06/07 PHP
PHP Swoole异步Redis客户端实现方法示例
2019/10/24 PHP
ExtJS 2.0实用简明教程之应用ExtJS
2009/04/29 Javascript
Microsoft Ajax Minifier 压缩javascript的方法
2010/03/05 Javascript
jQuery学习笔记 更改jQuery对象
2012/09/19 Javascript
高效的获取当前元素是父元素的第几个子元素
2013/10/15 Javascript
JavaScript实现找出数组中最长的连续数字序列
2014/09/03 Javascript
JS右下角广告窗口代码(可收缩、展开及关闭)
2015/09/04 Javascript
有关文件上传 非ajax提交 得到后台数据问题
2016/10/12 Javascript
JavaScript获取短信验证码(周期性)
2016/12/29 Javascript
jQuery Validate 数组 全部验证问题
2017/01/12 Javascript
关于不同页面之间实现参数传递的几种方式讨论
2017/02/13 Javascript
jstree单选功能的实现方法
2017/06/07 Javascript
vue实现个人信息查看和密码修改功能
2018/05/06 Javascript
基于Vue-cli快速搭建项目的完整步骤
2018/11/03 Javascript
JavaScript类型相关的常用操作总结
2019/02/14 Javascript
使用JS判断页面是首次被加载还是刷新
2019/05/26 Javascript
使用rst2pdf实现将sphinx生成PDF
2016/06/07 Python
Python  pip安装lxml出错的问题解决办法
2017/02/10 Python
Python3使用turtle绘制超立方体图形示例
2018/06/19 Python
Python实现的对本地host127.0.0.1主机进行扫描端口功能示例
2019/02/15 Python
计算机二级python学习教程(2) python语言基本语法元素
2019/05/16 Python
Python正则表达式匹配和提取IP地址
2019/06/06 Python
pygame编写音乐播放器的实现代码示例
2019/11/19 Python
python进度条显示-tqmd模块的实现示例
2020/08/23 Python
澳大利亚领先的在线机械五金、园艺和存储专家:Edisons
2018/03/24 全球购物
倡导文明标语
2014/06/16 职场文书
个人总结与自我评价
2014/09/18 职场文书
平安家庭事迹材料
2014/12/20 职场文书
求职信范文怎么写
2015/03/19 职场文书
2016自主招生校长推荐信范文
2015/03/23 职场文书
2019年工作总结范文
2019/05/21 职场文书
如何判断pytorch是否支持GPU加速
2021/06/01 Python