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 相关文章推荐
js 点击按钮弹出另一页,选择值后,返回到当前页
May 26 Javascript
javascript使用location.search的示例
Nov 05 Javascript
javascript弹出层输入框(示例代码)
Dec 11 Javascript
ListBox实现上移,下移,左移,右移的简单实例
Feb 13 Javascript
jQuery中:last选择器用法实例
Dec 30 Javascript
分享9点个人认为比较重要的javascript 编程技巧
Apr 27 Javascript
chrome不支持form.submit的解决方案
Apr 28 Javascript
jQuery消息提示框插件Tipso
May 04 Javascript
JavaScript定时器和优化的取消定时器方法
Jul 03 Javascript
JavaScript制作颜色反转小游戏
Sep 25 Javascript
js实现整体缩放页面适配移动端
Mar 31 Javascript
vue+element UI实现树形表格
Dec 29 Vue.js
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面向对象分析设计的经验原则
2008/09/20 PHP
Yii PHP Framework实用入门教程(详细介绍)
2013/06/18 PHP
PHP字符串的递增和递减示例介绍
2014/02/11 PHP
thinkphp中AJAX返回ajaxReturn()方法分析
2016/12/06 PHP
php抽象类和接口知识点整理总结
2019/08/02 PHP
Javascript+XMLHttpRequest+asp.net无刷新读取数据库数据
2009/08/09 Javascript
javascript制作的网页侧边弹出框思路及实现代码
2014/05/21 Javascript
select多选 multiple的使用示例
2014/06/16 Javascript
angularjs表格ng-table使用备忘录
2016/03/09 Javascript
jQuery简单设置文本框回车事件的方法
2016/08/01 Javascript
微信小程序实现图片懒加载的示例代码
2017/12/13 Javascript
angular2模块和共享模块详解
2018/04/08 Javascript
vue中如何实现后台管理系统的权限控制的方法示例
2018/09/19 Javascript
node.js命令行教程图文详解
2019/05/27 Javascript
ES6基础之 Promise 对象用法实例详解
2019/08/22 Javascript
Vue2.x和Vue3.x的双向绑定原理详解
2020/11/05 Javascript
[05:15]DOTA2英雄梦之声_第16期_灰烬之灵
2014/06/21 DOTA
Python 文件重命名工具代码
2009/07/26 Python
python实现的简单文本类游戏实例
2015/04/28 Python
python在线编译器的简单原理及简单实现代码
2018/02/02 Python
在cmd命令行里进入和退出Python程序的方法
2018/05/12 Python
wxPython多个窗口的基本结构
2019/11/19 Python
Python读取YAML文件过程详解
2019/12/30 Python
css3加js做一个简单的3D行星运转效果实例代码
2017/01/18 HTML / CSS
中国跨境电商:Tomtop
2017/03/16 全球购物
凯普林包包西班牙官网:Kipling西班牙
2019/04/12 全球购物
添柏岚英国官方网站:Timberland英国
2019/11/28 全球购物
学生就业推荐信
2013/11/13 职场文书
股权转让协议书
2014/04/12 职场文书
诉讼财产保全担保书
2014/05/20 职场文书
2015年元旦促销方案书
2014/12/09 职场文书
我的中国梦主题班会
2015/08/14 职场文书
学术会议开幕词
2016/03/03 职场文书
教你怎么用PyCharm为同一服务器配置多个python解释器
2021/05/31 Python
Mysql调整优化之四种分区方式以及组合分区
2022/04/13 MySQL