随笔-13  评论-1438  文章-0  trackbacks-17


升级记录


2008-07-22 14:47

bug描述:ajaxValidator函数在提交后发生错误,停留在本页面后,再次触发校验会让提示内容一直处于onload状态。

这个bug已经修复,请重新下载。

 

2008/7/17 14:12:00 jQuery formValidator 3.1ver


1、为inputValidator增加empty属性。用于设置控件文本值是否允许两边为空。具体请看demo1里的密码的校验代码。
该属性是个对象,默认值{leftempty:true,rightempty:true,emptyerror:null}
leftempty:表示左边是否允许为空
rightempty:表示右边是否允许为空
emptyerror:出现该错误的时候的提示,如果为null,则利用onerror属性来提示错误。
注:只能在type:"size"的时候使用,即比较长度的时候。

2、修改自动构建提示层的语法。为formValidator函数增加relativeid属性。
relativeid:表示提示层相对定位的控件ID,如果为空,则用当前校验控件的ID。
tipid:表示自动创建的提示层的ID,如果为空,则用当前校验控件的ID+"Tip"来命名。

3、修正ajaxValidator函数里beforesend属性的bug。代码忘记传递它的唯一参数。

4、修正ajaxValidator函数在后台无法获取中文的bug。

5、更新了升级记录、用户手册、增加了2个提问。


更多的升级记录,请点击这里


1、现场演示


http://www.yhuan.com/formvalidator/demo1.htm

 

2、jQuery pageValidator插件主要功能

 

  1. 支持所有类型客户端控件的校验
  2. 支持jQuery所有的选择器语法,只要控件有唯一ID和type属性
  3. 支持函数和正则表达式的扩展。提供扩展库formValidatorReg.js,你可以自由的添加、修改里面的内容。
  4. 支持2种校验模式。第一种:文字提示(showword模式);第二种:弹出窗口提示(showalert模式)
  5. 支持多个校验组。如果一个页面有多个提交按钮,分别做不同得提交,提交前要做不同的校验,所以你得用到校验组的功能。
  6. 支持4种状态的信息提示功能,可以灵活的控制4种状态是否显示。第一种:刚打开网页的时候进行提示;第二种:获得焦点的时候进行提示;第三种:失去焦点时,校验成功时候的提示;第四种:失去焦点时,校验失败的错误提示。
  7. 支持自动构建提示层。可以进行精确的定位。
  8. 支持自定义错误提示信息。
  9. 支持控件的字符长度、值范围、选择个数的控制。值范围支持数值型和字符型;选择的个数支持radio/checkbox/select三种控件
  10. 支持2个控件值的比较。目前可以比较字符串和数值型。
  11. 支持服务器端校验。
  12. 支持输入格式的校验。

 

3、jQuery formValidator插件 API帮助文档

帮助文档请点击这里 


4、下载API帮助、源码、示例


http://files.cnblogs.com/wzmaodong/formValidator3.1.rar

http://files.cnblogs.com/wzmaodong/formValidator2.4.rar

校验代码升级器


5、示例代码

<script type="text/javascript">
$(document).ready(function(){
 $.formValidator.initConfig({onError:function(){alert("校验没有通过,具体错误请看错误提示")}});
 $("#test1").formValidator({onshow:"请输入用户名",onfocus:"用户名至少6个字符,最多10个字符",oncorrect:"恭喜你,你输对了"}).InputValidator({min:6,max:10,onerror:"你输入的用户名非法,请确认"});

 $("#test2").formValidator({onshow:"请选择你的兴趣爱好(至少选择3个,最多选择5个)",onfocus:"你至少选择3个,最多选择5个",oncorrect:"恭喜你,你选对了"}).InputValidator({min:3,max:5,onerror:"你选的个数不对(至少选择3个,最多选择5个)"});

 $("#test3").formValidator({onshow:"请选择你的兴趣爱好(至少选一个)",onfocus:"你至少选择1个",oncorrect:"恭喜你,你选对了"}).InputValidator({min:1,onerror:"你选的个数不对"});

 $("#xueli").formValidator({onshow:"请选择你的学历",onfocus:"学历必须选择",oncorrect:"谢谢你的配合"}).SelectValidator({onerror: "你是不是忘记选择学历了!"});

 $("#password1").formValidator({onshow:"请输入密码",onfocus:"两次密码必须一致哦",oncorrect:"密码一致"}).InputValidator({min:1,onerror:"密码不能为空,请确认"}).CompareValidator({desID:"password2",operateor:"=",onerror:"2次密码不一致,请确认"});

 $("#nl").formValidator({onshow:"请输入的年龄(1-99岁之间)",onfocus:"只能输入1-99之间的数字哦",oncorrect:"恭喜你,你输对了"}).InputValidator({min:1,max:99,type:"value",onerror:"年龄必须在1-99之间,请确认"});

 $("#aiguo").formValidator({onshow:"爱国的人一定要选哦",onfocus:"你得认真思考哦",oncorrect:"不知道你爱不爱,反正你是选了"}).InputValidator({min:1,max:1,onerror:"难道你不爱国?你给我选!!!!"});

 $("#shouji").formValidator({empty:true,onshow:"请输入你的手机号码,可以为空哦",onfocus:"你要是输入了,必须输入正确",oncorrect:"谢谢你的合作",onempty:"你真的不想留手机号码啊?"}).InputValidator({min:11,max:11,onerror:"手机号码必须是11位的,请确认"}).RegexValidator({regexp:"^[1][0-9]{10}$",onerror:"你输入的手机格式不正确"});

 $("#lxdh").formValidator({empty:true,onshow:"请输入你的联系电话,可以为空哦",onfocus:"你要是输入了,必须输入正确,格式例如:0577-88069620",oncorrect:"谢谢你的合作",onempty:"你真的不想留联系电话了吗?"}).RegexValidator({regexp:"^[[0-9]{3}-|\[0-9]{4}-]?(\[0-9]{8}|[0-9]{7})?$",onerror:"你输入的联系电话格式不正确"});

 $("#ms").formValidator({onshow:"请输入你的描述",onfocus:"描述至少要输入10个汉字或20个字符",oncorrect:"恭喜你,你输对了"}).InputValidator({min:20,onerror:"你输入的描述长度不正确,请确认"});
});
</script>



6、特别说明

如果你在使用过程中碰到什么问题请给我留言,发现bug请不要自行修改,也请留言,达到完善插件的目的,真正服务每个程序开发人员 .
请保留插件的版权申明,谢谢

posted on 2008-01-11 11:12 猫冬 阅读(11167) 评论(505)  编辑 收藏
评论共3页: 1 2 3 下一页 

评论:
#1楼 [楼主] 2008-05-16 11:00 | 猫冬      
--引用--------------------------------------------------
如果我要设置多个checkbox被选中就没有办法
我把代码改了一下
if(defaultValue.indexOf(this.value)!=-1){jqobj.attr("checked",true)}
--------------------------------------------------------
这个想法不错,确实checkbox应该允许有多个默认值,而radio应该只有一个.
等待下个版本更新吧!
这个想法真的不错
  回复  引用  查看    
#2楼  2008-05-17 11:13 | Hurray [未注册用户]
--引用--------------------------------------------------
请问固定电话的正则验证是不是存在问题?包括demo3.htm中的固话验证。代码如下:
$("#utel").formValidator({onshow:"",onfocus:"请填写电话",oncorrect:"谢谢"}).InputValidator({min:5,onerror: "请填写电话!"}).RegexValidator({regexp:"tel",datatype:"enum",onerror:"格式如:010-12345678"});
tel正则为:tel:"(\\d{3}-|\\d{4}-)?(\\d{8}|\\d{7})"
正则经我修改为tel:"^[0][1-9]{2,3}-[0-9]{5,8}$" 仍然不能正确验证
--------------------------------------------------------

我也发现同样的问题. 例如你输入:010-12345678abc 同样可以通过验证.请猫冬测试一下.

  回复  引用    
#3楼  2008-05-17 11:39 | 曹鹏飞 [未注册用户]
不知道在有母版页的时候怎样使用?
  回复  引用    
#4楼 [楼主] 2008-05-17 17:34 | 猫冬      
@曹鹏飞
你把代码写到js文件里,再在Page_Load注册到页面里就可以了
  回复  引用  查看    
#5楼 [楼主] 2008-05-17 17:37 | 猫冬      
@Hurray
好像是这样的,我会把扩展库里的正则表达式修正过来的。
等待下个版本一起更新。
不过,这个不影响插件的使用。
如果你有比较好的正则表达式来校验电话号码的,请贴上来谢谢!!
  回复  引用  查看    
#6楼  2008-05-19 11:38 | Hurray [未注册用户]
正则表达式验证电话号码的函数(包括验证国内区号,国际区号,分机号):
/^(([0\+]\d{2,3}-)?(0\d{2,3})-)?(\d{7,8})(-(\d{3,}))?$/

单独测试正确,可是放到插件里面就验证错误,请猫冬测试。

测试代码:
<SCRIPT LANGUAGE="JavaScript">
function testit(){
var filter=/^(([0\+]\d{2,3}-)?(0\d{2,3})-)?(\d{7,8})(-(\d{3,}))?$/;
alert(filter.test(txt.value));
}
</SCRIPT>
<input id=txt onchange="testit()">
  回复  引用    
#7楼  2008-05-21 01:20 | chyoqin [未注册用户]
.AjaxValidator({
type : "get",
url : "Default.aspx",
datatype : "json",
data:
success : function(data){
if( data == "1" )
{
return true;
}
else
{
return false;
}
},
buttons: $("#button"),
error: function(){alert("服务器没有返回数据,可能服务器忙,请重试");},
onerror : "该用户名不可用,请更换用户名",
onwait : "正在对用户名进行合法性校验,请稍候..."
}).DefaultPassed();
如果想在data里传递一些值(比如:input 里的值),怎么设置呢?
  回复  引用    
#8楼 [楼主] 2008-05-21 11:27 | 猫冬      
@chyoqin
data参数跟$.ajax里的data是一样的
你可以用下面3种方式写:
"id1=value1&id2=value2"

{id1:value1,id2:value2}
或者你用form.js插件,可以可以避免特殊字符的烦恼
$("#id1,#id2").fieldSerialize() 这里取到的值跟第一种方法一样
  回复  引用  查看    
#9楼  2008-05-21 11:34 | chyoqin [未注册用户]
谢谢回复,
我用data:'act=check&username='+$('#u_username').val(), (//这是参照本页例子的.)只能接收到act='check',收不到username的值,
用data:'act=check&username=test',就能收到.
我用的是2.9版本
  回复  引用    
#10楼 [楼主] 2008-05-21 12:29 | 猫冬      
@chyoqin
2.9版本有bug,请重新下载2.9.1版本
你现在说的问题,其实是老问题了,你因为看一下更新记录,我贴上来你看一下
--------------------------------------------------------
2008/1/22 23:58:57 jQuery formValidator 1.1.2 ver
1、为AjaxValidator添加一个addidvalue属性(是否自动添加id和值到url参数后面)
为了修复AjaxValidator在配置信息的时候,取不到运行时候值的bug
插件将自动在url后面自动添加,形式为"id=value"的网页参数
在服务器端,你可以通过Request.querystring["id"]来取值
具体演示请看demo1里的用户名输入和Default.aspx

2008/3/14 12:16:00 jQuery formValidator 2.2 ver
帮助里一直有个错误,到今天才发现,表示抱歉。
2、AjaxValidator校验方式,将自动再增加一个参数到请求的地址后面"clientid=触发校验的表单ID"。
如果你是一个jQuery集合做校验,如果用到了AjaxValidator校验方式,在服务器端,你无法知道触发校验的是哪个表单元素,所以在请求的地址后面追加"clientid=触发校验的表单ID"。



你说的问题就是"在配置信息的时候,取不到运行时候值的bug",你可以参考demo1里用户名的写法
  回复  引用  查看    
#11楼  2008-05-21 12:49 | chyoqin [未注册用户]
"在服务器端,你可以通过Request.querystring["id"]来取值 "这个我在PHP里是取不到值的,Request.querystring在PHP里没定义呀,它是在那个文件中的吗?
不明白在Default.aspx.cs里怎么能取到值呢?
Request.querystring,是不是aspx的一个属性呀?
不懂asp.

  回复  引用    
#12楼 [楼主] 2008-05-21 13:10 | 猫冬      
@chyoqin
Request.querystring["id"]是asp.net里的语法
php里应该有接收get过来参数的方法的吧!
  回复  引用  查看    
#13楼  2008-05-21 13:45 | chyoqin [未注册用户]
有呀,但就是收不到值,
PHP里传递的是name,要程序里传过去的是id吧?我把input里的name 和id 改为同名就可以了.
  回复  引用    
#14楼 [楼主] 2008-05-21 20:47 | 猫冬      
@chyoqin
你的认识是正确的
在asp.net里默认name和id是一样的
  回复  引用  查看    
#15楼 [楼主] 2008-05-21 21:27 | 猫冬      
@Nickol
你好,你提的建议,已经在新版本2.9.3里已经实现
具体实现是用了$.inArray()
谢谢你的建议和支持
  回复  引用  查看    
#16楼  2008-05-21 21:40 | ゞ智者.千虑      
更新了,支持一下..!
  回复  引用  查看    
#17楼 [楼主] 2008-05-21 21:57 | 猫冬      
@ゞ智者.千虑
谢谢你的支持!
感谢你以前提供演示空间!
再次感谢!
  回复  引用  查看    
#18楼  2008-05-22 08:28 | 高海东      
很好的客户端验证
  回复  引用  查看    
#19楼  2008-05-22 17:51 | 凌点_gmk      
楼主:您好,我下了你的代码,觉得你的代码很好很强大

我演示的时候有一个问题,期望得到你的解决,问题描述如下:
1.我把整个插件文件夹设根目录或虚拟目录(Jquery)时,即此时访问demo1.htm的路径为:
http://localhost/demo1.htm或
http://localhost/Jquery/demo1.htm
,检测用户名是否存在时,运行正常
2.我把整个插件文件夹放在根目录或虚拟目录(Jquery)所在的文件夹下时,即此时访问demo1.htm的路径为:
http://localhost/formvalidator2.9.3/demo1.htm或
http://localhost/Jquery/formvalidator2.9.3/demo1.htm
,检测用户名时,不管输入正确或错误,总是提示“服务器没有返回数据,可能服务器忙,请重试”

不知道我的描述是否清晰,谢谢!
  回复  引用  查看    
#20楼 [楼主] 2008-05-22 18:00 | 猫冬      
@凌点_gmk
请删除文件夹中的webconfig
还有default.asp.cs里有个延时的代码,你可以把它去掉
  回复  引用  查看    
#21楼 [楼主] 2008-05-22 18:01 | 猫冬      
@凌点_gmk
请看这篇文章里的在线演示!
原来这里的在线演示(针对你说的用户名校验)也是不行的,我刚刚删除了webconfig就可以了
  回复  引用  查看    
#22楼  2008-05-23 12:41 | 凌点_gmk      
@猫冬
删除了webconfig后可以了,谢谢
  回复  引用  查看    
#23楼  2008-05-26 14:53 | 六六 [未注册用户]
好像,IPV4的验证存在BUG,请楼主试试看!
  回复  引用    
#24楼 [楼主] 2008-05-26 17:43 | 猫冬      
@六六
能提供一个不行的测试用例吗?
  回复  引用  查看    
#25楼  2008-05-29 09:40 | 无名者 [未注册用户]
我想问一下阿.用了这个验证插件后.如何使用重置呢?
  回复  引用    
#26楼 [楼主] 2008-05-29 10:35 | 猫冬      
@无名者
你可以完全抄demo1里的代码来改!
demo1里的代码应该说已经很全了,所有类型的控件的校验都有涉及到.
如果还有什么不明白的,你可以留言,也可以加我QQ问:69353693
  回复  引用  查看    
#27楼  2008-06-03 15:51 | 六六 [未注册用户]
@猫冬
--------------------------
202.98.124.168
正确
--------------------------
以下都不正确
202.98.14.168
172.6.20.18
72.6.20.18
72.26.20.18
72.16.0.1
  回复  引用    
#28楼  2008-06-03 15:58 | 六六 [未注册用户]
@猫冬
我用的是IE7
--------------------
好像还有BUG
大写字母\小写字母
只要是字母都行,不论大小写

  回复  引用    
#29楼  2008-06-03 16:03 | Hurray [未注册用户]
请教猫冬,我注册时有手机号和邮箱二个文本框,至少要填写其中一个。这个验证如何写啊?
  回复  引用    
#30楼 [楼主] 2008-06-03 21:59 | 猫冬      
@Hurray
你说的这种2选1的功能,其实我回答过很多次了,在碰到问题的时候,请仔细阅读api帮助和faq.html里的问答。

摘录faq.html里的问答如下:
我有2个表单元素,任意一个元素输入东西就算验证通过,如何写代码?比如要求输入中文名字和英文名字任意一个即算校验通过。

$("#name_cn,#name_en").formValidator({tipid:"IMTip",onshow:"请填写任一种名字)",onfocus:"请请填写任一种名字。",oncorrect:"输入正确!"}).FunctionValidator({fun:allEmpty});

function allEmpty(val,elem)
{
return ($("#name_cn").val()=="" && $("#name_cn").val()=="")?'如果想和客户在线洽谈,请至少填写一种IM软件帐号!':true;
}



  回复  引用  查看    
#31楼 [楼主] 2008-06-03 22:01 | 猫冬      
@无名者
近期马上讲推出<jQuery formValidator表单校验插件的入门教材>

目前,你可以看这页的帮助
http://www.yhuan.com/formvalidator/userguide.html#4
也可以参考demo1.htm里的代码
  回复  引用  查看    
#32楼 [楼主] 2008-06-03 22:05 | 猫冬      
@六六
你好,你说的IP4的校验,正则表达式扩展库里的代码确实有问题,在下个版本更新的时候,我会修正扩展库里的表达式的。
如果,你有发现比较好的校验表达式,也请提供,谢谢。
  回复  引用  查看    
#33楼 [楼主] 2008-06-03 22:49 | 猫冬      
插件已经更新。修正对数值型值比较出错的问题
更新了2.9.3和2.4版本
  回复  引用  查看    
#34楼  2008-06-04 12:01 | 六六 [未注册用户]
@猫冬
---------------
以下是IPV4正则表达式,调试也成功

^(25[0-5]|2[0-4]\\d|[0-1]\\d{2}|[1-9]?\\d)\\.(25[0-5]|2[0-4]\\d|[0-1]\\d{2}|[1-9]?\\d)\\.(25[0-5]|2[0-4]\\d|[0-1]\\d{2}|[1-9]?\\d)\\.(25[0-5]|2[0-4]\\d|[0-1]\\d{2}|[1-9]?\\d)$


请猫冬更新试试!
  回复  引用    
#35楼  2008-06-04 12:04 | 六六 [未注册用户]
我用的是IE7
--------------------
好像还有BUG
大写字母\小写字母
只要是字母都行,不论大小写

  回复  引用    
#36楼 [楼主] 2008-06-04 12:16 | 猫冬      
@六六
先感谢你提供ip4正则表达式.
你说的大小写的问题都是正则表达式扩展库里的错误,我会仔细测试一下的.
还是那句话:如果有比较好的校验表达式,也请提供,谢谢。
  回复  引用  查看    
#37楼  2008-06-06 16:14 | 求知无傲      
好好用下。
  回复  引用  查看    
#38楼  2008-06-12 17:21 | Hurray [未注册用户]
我的用户名AJAX验证是这样写的,服务器端总是接不到值,action的值都接收不到。总是提示"服务器没有返回数据,可能服务器忙,请重试"

.AjaxValidator({
type : "get",
url : "reg/register.php",
data : "action=check_email&email="+$("#email").val(),
datatype : "json",
success : function(data){
if( data == "Y" )
{
return true;
}
else
{
return false;
}
},
buttons: $("#sub_1"),
error: function(){alert("服务器没有返回数据,可能服务器忙,请重试");},
onerror : "该用户名不可用,请更换用户名",
onwait : "正在对用户名进行合法性校验,请稍候..."
});
  回复  引用    
#39楼 [楼主] 2008-06-12 20:52 | 猫冬      
@Hurray
请看更新记录
2008/1/22 23:58:57 jQuery formValidator 1.1.2 ver
1、为AjaxValidator添加一个addidvalue属性(是否自动添加id和值到url参数后面)
为了修复AjaxValidator在配置信息的时候,取不到运行时候值的bug
插件将自动在url后面自动添加,形式为"id=value"的网页参数
在服务器端,你可以通过Request.querystring["id"]来取值
具体演示请看demo1里的用户名输入和Default.aspx

2008/3/14 12:16:00 jQuery formValidator 2.2 ver
帮助里一直有个错误,到今天才发现,表示抱歉。
2、AjaxValidator校验方式,将自动再增加一个参数到请求的地址后面"clientid=触发校验的表单ID"。
如果你是一个jQuery集合做校验,如果用到了AjaxValidator校验方式,在服务器端,你无法知道触发校验的是哪个表单元素,所以在请求的地址后面追加"clientid=触发校验的表单ID"。



你说的问题就是"在配置信息的时候,取不到运行时候值的bug",你可以参考demo1里用户名的写法
  回复  引用  查看    
#40楼  2008-06-13 16:05 | Hurray [未注册用户]
谢谢猫冬,已经搞定。
  回复  引用    
#41楼  2008-06-16 16:24 | yangzhenpeng [未注册用户]
插件不错,我想用可就是15位身份证无法验证。哎。就是这一句不对。你看怎么改改。if(!/^\d{17}(\d|x)$/i.test(sId)) return "你输入的身份证长度或格式错误"; 测试身份证:412829770410052 340504661108023 340521650411053 希望能给我回个邮件。十分感谢。要不然我就只能放弃啦。
  回复  引用    
#42楼 [楼主] 2008-06-16 20:02 | 猫冬      
@yangzhenpeng
这个页面就是用2种方式来实现身份证的校验.
http://www.yhuan.com/formvalidator/demo5.htm
  回复  引用  查看    
#43楼  2008-06-19 14:58 | maoy [未注册用户]
表单全部验证成功后,进行异步提交所有数据,以得到返回信息显示,
应该如何做?
  回复  引用    
#44楼 [楼主] 2008-06-19 17:00 | 猫冬      
@maoy
$.formValidator.initConfig函数里,有个属性onSuccess,表示该组校验通过后的回调函数

或者你直接在按钮的单击事件或form的submit事件里
if($.formValidator.PageIsValid('1'))
{
$.ajax(你的异步请求)
}
else
{
return false;
}
  回复  引用  查看    
#45楼 [楼主] 2008-06-21 15:46 | 猫冬      
@maoy
留言板里的留言是你写的吗?
你在留言中描述:
----------------------------------------------------------------
.formValidator.initConfig({onError:function(msg){alert(msg)},onSuccess:function(){$("#myForm").ajaxForm(function(data) {
if(data=='pubSuccess')
{
alert("发布成功!");
}
})
}
})

<form id="myForm" name="myForm" method="POST" action="{{url controller=commonManage action=PublishInfo}}" enctype="multipart/form-data" onsubmit="return jQuery.formValidator.PageIsValid();return false">
主要代码如上所示,问题是:在IE7.0中运行正确,弹出“发布成功”对话框。而在firefox3.0中运行效果就不一样了,在提交过去的那一页显示为(另一页)“pubSuccess”
----------------------------------------------------------------------------

我估计你的PageIsValid函数是写在submit里的,onSuccess一执行完成就执行提交了。而你在onSuccess里写异步的Ajax请求。在firefox出现这样的原因是:你的代码执行了,但是异步请求还没有请求,已经跳转到你的提交页面了,等请求返回数据了,你的“pubSuccess”就write到提交页面(另外一个页面)了


解决办法,你可以写成同步的ajax请求;
或者你不让表单提交,改用ajaxSubmit
if($.formValidate.PageIsValid('1'))
{
$("#myForm").ajaxSubmit(...);
return false;
}
  回复  引用  查看    
#46楼  2008-06-23 12:35 | 星辉      
博主,说声谢谢!

请问怎么3.0的下载不载了不对啊,下载后的rar只有2k?
  回复  引用  查看    
#47楼  2008-06-23 13:14 | 今晚打老虎 [未注册用户]
博主,你真是太有才了,找了N久,终于让我找到救星了,刚Down下来准备应用到我的代码中,太感谢你了!!!
  回复  引用    
#48楼 [楼主] 2008-06-23 16:57 | 猫冬      
@星辉
ver3.0还没有发布出来,但是在演示的空间里已经更新成3.0
虽然有部分功能还在商讨中,但是目前3.0版本是没有bug的,请放心使用。
已经放文件到博客上,请重新下载
  回复  引用  查看    
#49楼 [楼主] 2008-06-23 16:58 | 猫冬      
@今晚打老虎
感谢你的支持,希望能多提建议,谢谢!
  回复  引用  查看    
#50楼 [楼主] 2008-06-23 17:00 | 猫冬      
ver3.0版本下载连接
http://www.cnblogs.com/Files/wzmaodong/formValidator3.0.rar
需要的人可以下载,如何使用请看更新记录和用户手册
  回复  引用  查看    
#51楼  2008-06-23 19:28 | 今晚打老虎 [未注册用户]
@猫冬
问个弱弱的问题,把表单的Id改了之后页面就没反应了,
你的代码是:
$("#zs").formValidator({onshow:"请输入整数",oncorrect:"谢谢你的合作,你的整数正确"}).RegexValidator({regexp:"intege",datatype:"enum",onerror:"整数格式不正确"});

<input type="text" id="zs" style="width:120px" />

我把Id改成zs1,页面就没反应,

$("#zs1").formValidator({onshow:"请输入整数",oncorrect:"谢谢你的合作,你的整数正确"}).RegexValidator({regexp:"intege",datatype:"enum",onerror:"整数格式不正确"});

<input type="text" id="zs1" style="width:120px" />


我是刚接触这个东西,很多地方还不是很了解,看了老半天,没有什么进展,所以请教下!!!!



  回复  引用    
#52楼 [楼主] 2008-06-23 20:51 | 猫冬      
@今晚打老虎
你也没有学过jquery?如果没有,也没有关系,只要你记住$("#控件ID号"),括号里的是控件的ID号,就可以了

建议你多模仿demo1里的代码写。

如果还有其它问题,你还是加我QQ(69353693)问吧,现在我看博客的次数少了。
  回复  引用  查看    
#53楼  2008-06-24 10:45 | 狐羽      
有没有人告诉你,你的身份证验证有问题不能验证15位身份证!
还有调用WdatePicker后填写错误的日期点提交就会出jquery脚本错误提示
意外的调用focus
  回复  引用  查看    
#54楼  2008-06-24 16:03 | bluelazysb [未注册用户]
select控件调用AjaxValidator好像会出错
  回复  引用    
#55楼 [楼主] 2008-06-24 16:20 | 猫冬      
@bluelazysb
能把代码贴出来看看吗?
  回复  引用  查看    
#56楼  2008-06-24 17:18 | 今晚打老虎 [未注册用户]
@猫冬
你那个formValidator中empty判断好像不起作用,比如说,我点了密码框没有输入任何东西,提示的不是onempty的内容,如果我在inputValidator设置了最大和最小,就会提示他们相应的错误信息,可以说始终onempty没起作用!!!
不知是我理解的不深刻还是其他!!!
  回复  引用    
#57楼  2008-06-24 17:33 | 蜗牛身上的一只蚂蚁      
最近要做一个网站。打算用下猫哥写的jQuery。关注。。。。。也谢谢猫哥
  回复  引用  查看    
#58楼  2008-06-24 17:54 | 随风 net      
发现在获取数据长度的时候没有去除左右两边的空格,这样用户输入" "就可以通过非空验证了,还有就是在确定双字节ASCII的时候LZ用的是if (val.charCodeAt(i) >= 0x4e00 && val.charCodeAt(i) <= 0x9fa5){ ,我认为这样并不能准确计算所有的双字节,比如","(区别于","),我把这句改成了if (val.charCodeAt(i) > 255){,应该就差不多了。
感谢LZ的无私奉献!
  回复  引用  查看    
#59楼  2008-06-24 17:57 | bluelazysb [未注册用户]
@猫冬
=====>select控件调用AjaxValidator好像会出错
版本升级到3.0,代码如下:

$("#edit_ctmca").formValidator({
onshow:"请选择【地域】!",
onfocus:"【地域】必须选择!",
oncorrect:"谢谢你的配合!"
}).inputValidator({
min:1,
onerror:"【地域】必须选择!"
}).ajaxValidator({

});
当select发生onchange事件时报错。
出错信息大概为: get(...).setings为Null或者不是Object。
使用functionValidator则正常,如下:

$("#edit_ctmca").formValidator({
onshow:"请选择【地域】!",
onfocus:"【地域】必须选择!",
oncorrect:"谢谢你的配合!"
}).inputValidator({
min:1,
onerror:"【地域】必须选择!"
}).functionValidator({
fun:function(val,elem){
//alert(val);
return true;
}
});
  回复  引用    
#60楼  2008-06-24 18:01 | bluelazysb [未注册用户]
另外问一个简单的问题,
3.0版本开始自动注册$.formValidator.pageIsValid()函数,
请问这样的话,不需要验证的submit按钮(如删除按钮,返回按钮等)如何关闭验证功能,谢谢!
  回复  引用    
#61楼  2008-06-24 18:04 | 随风 net      
日期验证那里,当选择一个符合条件的日期后,在点击输入框,弹出日期选择菜单,这时点击“清空”按钮,没有激发验证,尽管输入框是空值,但是后面的TIP仍显示“你输入的日期合法”.
  回复  引用  查看    
#62楼  2008-06-24 18:15 | 随风 net      
@bluelazysb
我也没有发现注册了pageIsValid方法后怎样控制调用的属性,或许你可以添加一个,反正有源代码。
  回复  引用  查看    
#63楼  2008-06-24 19:36 | SZW      
好象浮点数的判断有点问题,只要第一个字符是数字,后面接字母也会通过
  回复  引用  查看    
#64楼 [楼主] 2008-06-24 20:49 | 猫冬      
@bluelazysb
在asp.net里,如果删除按钮是服务器控件,会触发表单提交。
所以目前没有解决办法,你只能按照老的方法,自己写pageIsValidad()到对应的按钮里
  回复  引用  查看    
#65楼 [楼主] 2008-06-24 21:08 | 猫冬      
@SZW
能不能提供一个测试案例?
  回复  引用  查看    
#66楼 [楼主] 2008-06-24 21:10 | 猫冬      
@bluelazysb
你说的删除按钮不触发验证,这个功能,我会想办法解决的。
  回复  引用  查看    
#67楼 [楼主] 2008-06-24 21:21 | 猫冬      
@随风 net
日期控件清空后,还是提示正确,是因为:当你按【清空】,触发控件的onblur事件,验证成功,当点玩按钮,清空(赋值),是不触发任何控件的事件的,即tip是不会变的。
解决办法,在点按钮的回调函数里,触发控件的onblur事件

演示页面已经更新,插件等明天更新吧(昨天调试bug太迟了,今天累啊)
  回复  引用  查看    
#68楼 [楼主] 2008-06-24 22:55 | 猫冬      
@bluelazysb
你好select的ajax错误,我明天调行吗?今天很累了,昨天调试插件的bug到01:23。
明天一定回复
  回复  引用  查看    
#69楼  2008-06-25 09:03 | bluelazysb [未注册用户]
@猫冬
多谢回复,楼主辛苦了,不需要那么急的。
  回复  引用    
#70楼  2008-06-25 13:07 | bluelazysb [未注册用户]
另外还发现一个现象想请教:
如下代码可以正常运行:
$("#edit_cpcglpdtcd").formValidator({
onshow:"请输入【产品代码】!",
onfocus:"【产品代码】不能为空!",
oncorrect:"该【产品代码】可以使用!"
}).inputValidator({
min:1,
onerror:"【产品代码】不能为空!"
}).functionValidator({
fun:function(val,elem){
var ctmcd = $("#edit_cpcctmcd").val();
$.ajax({
type: "post",
async : false,
url: "ctmpdtcheckctmpriceedit.action",
data: "edit_cpcctmcd="+ctmcd+"&edit_cpcglpdtcd="+val,
success: function(data){
type = data;
}
});
if(type == 1) {
if($("#edit_cpcctmcdTip").hasClass("onError")) $.formValidator.setTipState("edit_cpcctmcdTip", "onSuccess", "该【客户名称】可以使用!");
return true;
} else {
return "该【客户】该【产品】已经被注册过,请更换!";
}
}
}).ajaxValidator({
type :"get",
url :"pdtcdcheckctmpriceedit.action",
datatype :"html",
success :function(data){
if(data=="1") return true; else return false;
},
buttons: $("#btn_insert"),
error: function(){
alert("可能服务器忙,没能返回数据,请重试!");
},
onerror :"该【产品代码】还没有被注册过,请更换!",
onwait :"正在对【产品代码】进行合法性校验,请稍候..."
});
但是如果先执行ajaxValidator再调用functionValidator,则functionValidator不能被执行到。
是不是ajaxValidator中返回值写错了导致无法继续验证下去?
  回复  引用    
#71楼  2008-06-25 17:31 | kevin_gzhz [未注册用户]
楼主辛苦啦!!
刚用楼主的2.4版本做了一个行业网站的项目,效果很不错!
不过现在做的企业管理系统对验证的展现效果有新的要求,主要是没有
空间来给出信息提示的div,自己根据需求修改了一下,主要效果是验证后
在表单后面出现一个提示图标,点击这个图标才出现具体的提示信息,这样子
比较节约空间。既然楼主有声明说新需求向你提出,不知楼主能否在下一个版本中实现这种UI效果啦!期待中...
  回复  引用    
#72楼 [楼主] 2008-06-25 22:39 | 猫冬      
@kevin_gzhz
你好!我对你的需求还不是很清楚,能加我qq细谈吗?QQ:69353693
  回复  引用  查看    
#73楼 [楼主] 2008-06-25 22:52 | 猫冬      
@bluelazysb
functionValidator在ajaxValidator后面不能执行,是因为:插件做了判断,ajaxValidator只允许在链写的最后,后面的校验全部忽略。
因为ajaxValidator可能是异步的,所以你在它后面再写验证是没有意义的。
虽然可以判断的出是异步还是同步,但是目前插件是不允许ajaxValidator后面还跟着其它校验(忽略,不会报错)。
  回复  引用  查看    
#74楼  2008-06-26 11:13 | 一抹微蓝      
验证分组是不是有bug?
当有多个分组的时候,提交第一个分组时会把第一个未通过验证的控件的错误信息提示两次,提交最后一个分组时分报“settings.0为空或不是对象”的错误。
官方给出的demo也有这个错误提示。
  回复  引用  查看    
#75楼 [楼主] 2008-06-26 12:51 | 猫冬      
@一抹微蓝
你好,这个bug是这次代码升级造成的,谢谢你的反馈.
代码已经更新,请重新下载
  回复  引用  查看    
#76楼  2008-06-26 15:13 | 一抹微蓝      
谢谢“猫冬”及时反馈。
  回复  引用  查看