当前位置: 首页 > 图文教程 > 网络编程 > Javascript > FormValidate 表单验证功能代码更新并提供下载

Javascript
JQuery Tips(3) 关于$()包装集内元素的改变
JavaScript 创建随机数和随机图片
javascript document.execCommand() 常用解析
firefox下对ajax的onreadystatechange的支持情况分析
Javascript attachEvent传递参数的办法
jQuery Attributes(属性)的使用(一、属性篇)
jquery自动完成插件(autocomplete)应用之PHP版
查询绑定数据岛的表格中的文本并修改显示方式的js代码
讨论javascript(一)工厂方式 js面象对象的定义方法
IE不支持option的display样式,只能使用remove和add
多浏览器兼容的获取元素和鼠标的位置的js代码
js checkbox全选并将获取值放到input里边
javascript 日期联动选择器 [其中的一些代码值得学习]
javascript实现的仿51job地址多项选择方式效果
jQuery 渐变下拉菜单
利用图片的 onerror 事件载入默认图片
js实现页面打印功能实例代码(附去页眉页脚功能代码)
JQuery读取XML文件数据并显示的实现代码
比较详细的关于javascript 解析json的代码
TextArea 控件的最大长度问题(js json)

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-12   浏览: 381 ::
收藏到网摘: n/a

加入验证模式 4,同3,但是当验证不通过时,立即停止向下检查。在模式3下,如果发生错误,会把错误记录,并向下检查,模式4就不向下检查了 FormValidate 功能更新
下载:
http://sh.ruanchen.com/"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则不存这个问题。