随笔-12  评论-821  文章-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 猫冬 阅读(9991) 评论(483)  编辑 收藏
评论共3页: 1 2 3 下一页 

评论:
#1楼 [楼主] 2008-04-20 23:09 | 猫冬      
2.9版本已经修复完成正在测试当中............
有需要的人,可以先下载用(已经修复下载链接),有bug请及时反馈!!
  回复  引用  查看    
#2楼  2008-04-21 16:26 | wowo [未注册用户]
我下了你的插件,怎么只有maodong才可以通过验证,其他怎么不行,能告诉我怎么改吗?
  回复  引用    
#3楼 [楼主] 2008-04-21 17:11 | 猫冬      
@wowo
请看一下default.aspx.cs的代码,如下
string ls_user = Request.QueryString["test1"];
if(ls_user=="maodong")
Response.Write("1");
else
Response.Write("0");


所以只有maodong才可以通过验证
  回复  引用  查看    
#4楼  2008-04-22 10:40 | wowo [未注册用户]
谢谢,你的办事效率真高,顶你以后.
我是菜鸟,请问怎么改就行了.
  回复  引用    
#5楼 [楼主] 2008-04-22 11:51 | 猫冬      
@wowo
根据你的实际情况修改这句话
if(如果该用户不存在)
Response.Write("1");
else
Response.Write("0");

  回复  引用  查看    
#6楼  2008-04-22 15:41 | yongzhi      
大哥,请问关于2.9版本的逻辑错误BUG解决了吗?2.9是否可以作为稳定版本来用了?
  回复  引用  查看    
#7楼 [楼主] 2008-04-22 17:45 | 猫冬      
@yongzhi
可以了,不过有点改动.
这页的升级记录里:
2008-04-21
修复完成,已经回复下载
针对radio和checkbox现在只支持用name来注册校验
$("input:radio[name='sex']").formValidator({...})
我会想办法支持用id来注册这类控件的校验得,向2.4版本兼容

  回复  引用  查看    
#8楼  2008-04-23 08:51 | wowo [未注册用户]
谢谢,如果你能做个教程,给我们这些菜鸟用,对你的插件推广有好处.
  回复  引用    
#9楼 [楼主] 2008-04-23 11:13 | 猫冬      
@wowo
现在有代码生成器,你可以用这个来生成校验代码
至于教材...
有时间就做一个
  回复  引用  查看    
#10楼  2008-04-23 16:51 | wowo [未注册用户]
<script language="javascript">
<!--
function BeforeSubmit()
{
if(document.form1.u.value=="")
{
alert("请先输入您要注册的用户名!");
form1.u.focus();
return false;
}
if(form1.u.value.length<6||form1.u.value.length>20){
alert("\您的用户名长度应该在6-20个字之间!");
form1.u.focus();
return false;
}
if(document.form1.p.value!=document.form1.pas.value){
alert("两次密码填写不相同!");
form1.pas.focus();
return false;
}
if(form1.s{0}.checked==false&&form1.s{1}.checked==false)
{
alert("请选择您的性别!");
form1.s{0}.focus();
return false;
}
if(document.form1.n.value=="")
{
alert("请输入您的年龄");
form1.n.focus();
return false;
}
if(document.form1.z.value=="")
{
alert("请输入您的职位");
form1.z.focus();
return false;
}
if(document.form1.d.value=="")
{
alert("请输入您的单位");
form1.d.focus();
return false;
}
if(document.getElementById('pa1').value=='-1')
{
alert("请选择密码保护问题!");
form1.pa1.focus();
return false;
}
if(document.form1.pa2.value=="")
alert("请选填写您的密码答案!");
form1.pa2.focus();
return false;
}
return false;
}
//-->
</script>

<style type="text/css">
<!--
.STYLE3 {font-size: 12px}
-->
</style>
</head>

<body background="imge/bjt.jpg" >
<div align="center">
<table width="100%">
<tr>
<td><!--#include file="top.asp" --></td>
</tr>
</table>

<table width="900" border="0" cellspacing="0" cellpadding="0">
<tr>
<td height="32" colspan="3" align="left" valign="middle" bgcolor="#FFFFFF"><div align="center">
<table width="862" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="202" align="left" valign="middle"><span style="font-weight: bold; font-size: 11pt">当前位置: &gt;&gt; 注册帐号 </span></td>
<td width="660" align="right">&nbsp;</td>
</tr>
</table>
</div></td>
</tr>
<tr>
<td height="0" colspan="3" align="left" valign="middle" background="imge/t_1.png"></td>
</tr>
<tr>
<td bgcolor="#FFFFFF">&nbsp;</td>
<td bgcolor="#FFFFFF"><form ACTION="<%=MM_editAction%>" METHOD="POST" name="form1" onSubmit="return BeforeSubmit()">
<table align="center">
<tr valign="baseline">
<td width="98" align="right" nowrap><span class="STYLE3">用户名:</span></td>
<td width="652"><span class="STYLE3">
<input name="u" type="text" id="u" value="" size="32">
<label></label>
<label>
<input name="check" type="button" id="check" value="检测用户" onClick="javascript:check_click(this)">
</label>
<span style="color: #FF0000">*</span>
只能由3-16位字母(a-z)、数字(0-9)或下划线(_)构成 </span></td>
</tr>
<tr valign="baseline">
<td nowrap align="right"><span class="STYLE3">密码:</span></td>
<td><span class="STYLE3">
<input name="p" type="password" id="p" size="32">
<span style="color: #FF0000">*</span> 密码长度6~16位,字母区分大小写 </span></td>
</tr>
<tr valign="baseline">
<td nowrap align="right"><span class="STYLE3">重复:</span></td>
<td><span class="STYLE3">
<input name="pas" type="password" id="pas" size="32">
<span style="color: #FF0000">*</span> 填写确认密码。</span></td>
</tr>
<tr>
<td nowrap align="right" valign="top"><span class="STYLE3">性别:</span></td>
<td valign="baseline"><table align="left">
<tr>
<td class="STYLE3"><input type="radio" value="男" name="s" >

<td class="STYLE3"> </tr>
<tr>
<td class="STYLE3"><input type="radio" value="女" name="s" >

<td class="STYLE3"> </tr>
</table></td>
</tr>
<tr valign="baseline">
<td nowrap align="right"><span class="STYLE3">年龄:</span></td>
<td><input name="n" type="text" id="n" value="" size="32"></td>
</tr>
<tr valign="baseline">
<td nowrap align="right"><span class="STYLE3">职位:</span></td>
<td><input name="z" type="text" id="z" value="" size="32"> </td>
</tr>
<tr valign="baseline">
<td nowrap align="right"><span class="STYLE3">单位</span></td>
<td><input name="d" type="text" id="d" value="" size="32"> </td>
</tr>
<tr valign="baseline">
<td nowrap align="right"><span class="STYLE3">城市:</span></td>

  回复  引用    
#11楼  2008-04-23 16:52 | wowo [未注册用户]
麻烦大家帮小弟看看上面这段代码,为什么验证不了?指点下小弟,
  回复  引用    
#12楼 [楼主] 2008-04-23 20:25 | 猫冬      
@wowo
建议你用jQuery formValidator表单校验插件
而且很适合你这种表单,书写起来页容易
  回复  引用  查看    
#13楼  2008-04-24 07:57 | caomusag [未注册用户]
我在一个普通页里用验证重复密码时没有问题,但是一放到母版+内容页里就看不到效果,这是怎么回事?

这是内容页里的代码:
<script type="text/javascript">
$(document).ready(function(){
//$.formValidator.initConfig({onError:function(){alert("校验没有通过,具体错误请看错误提示")}});
$.formValidator.initConfig({onError:function(msg){alert(msg)}});
$("#<%=this.password1.ClientID %>").formValidator({onshow:"请输入密码",onfocus:"密码不能为空",oncorrect:"密码合法"}).InputValidator({min:1,onerror:"密码不能为空,请确认"});
$("#<%=this.password2.ClientID %>").formValidator({onshow:"请输入重复密码",onfocus:"两次密码必须一致哦",oncorrect:"密码一致"}).InputValidator({min:1,onerror:"重复密码不能为空,请确认"}).CompareValidator({desID:"<%=this.password1.ClientID %>",operateor:"=",onerror:"2次密码不一致,请确认"});
});
</script>
================================================

<td >
<asp:TextBox ID="password1" runat="server" TextMode="Password"></asp:TextBox>
</td>
<td><div id="password1Tip" style="width:200px"></div></td>
</tr>
<tr>
<td >
重复密码:</td>
<td >
<asp:TextBox ID="password2" runat="server" TextMode="Password"></asp:TextBox>
</td>
<td><div id="password2Tip" style="width:200px"></div></td>
  回复  引用    
#14楼  2008-04-24 08:01 | caomusag [未注册用户]
尴尬了,贴出来才发现divtip里的id我忘了改了,哈哈。已经好了,不用麻烦你了。
  回复  引用    
#15楼  2008-04-25 10:08 | yongzhi      
请问固定电话的正则验证是不是存在问题?包括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}$" 仍然不能正确验证
  回复  引用  查看    
#16楼  2008-04-25 10:30 | kevin3618 [未注册用户]
密码验证,第一次如果验证正确,然后又修改了第一个密码,重复密码的提示还是没有改变,还是显示 密码一致!
  回复  引用    
#17楼 [楼主] 2008-04-25 11:16 | 猫冬      
@yongzhi
tel:"(\\d{3}-|\\d{4}-)?(\\d{8}|\\d{7})"
上面的肯定是可以的啊!
什么特例不行啊?你把你输入的东西贴上来看看

  回复  引用  查看    
#18楼 [楼主] 2008-04-25 11:18 | 猫冬      
@kevin3618
这个是我屏蔽了这部分代码!有必要马上校验出来吗?
  回复  引用  查看    
#19楼  2008-04-27 21:46 | ゞ智者.千虑      
更新了,留个脚印...
  回复  引用  查看    
#20楼  2008-05-15 09:28 | Nickol [未注册用户]
虽然已经很简单了,但是总觉得调用起来的代码有点复杂,看看能不能再简化点

另DateTimeMask插件在input为空的时候无法输入
  回复  引用    
#21楼  2008-05-15 11:35 | Nickol [未注册用户]
checkbox的默认值设置代码是这样的
if(this.value==defaultValue){jqobj.attr("checked",true)}

如果我要设置多个checkbox被选中就没有办法
我把代码改了一下
if(defaultValue.indexOf(this.value)!=-1){jqobj.attr("checked",true)}

indexOf用了prototype里的写法
if (!Array.prototype.indexOf) Array.prototype.indexOf = function(item, i){ //判断Array的原型是否已作indexOf方法的扩展
i || (i = 0); //初始化起步查询的下标,比较奇特的写法。
var length = this.length;
if (i < 0) i = length + i; // 如i为负数,则从数组末端开始。
for (; i < length; i++)
if (this[i] === item) return i; // 使用全等于(===)判断符
return -1;
};

然后可以这样设置默认值 defaultvalue:['a1','a2','a3']
  回复  引用    
#22楼 [楼主] 2008-05-16 10:56 | 猫冬      
--引用--------------------------------------------------
虽然已经很简单了,但是总觉得调用起来的代码有点复杂,看看能不能再简化点

另DateTimeMask插件在input为空的时候无法输入
--------------------------------------------------------
西西~~有没有什么好的改进方法呢?
DateTimeMask一定要先给出初始值的,给个值或者全部是0也可以
  回复  引用  查看    
#23楼 [楼主] 2008-05-16 11:00 | 猫冬      
--引用--------------------------------------------------
如果我要设置多个checkbox被选中就没有办法
我把代码改了一下
if(defaultValue.indexOf(this.value)!=-1){jqobj.attr("checked",true)}
--------------------------------------------------------
这个想法不错,确实checkbox应该允许有多个默认值,而radio应该只有一个.
等待下个版本更新吧!
这个想法真的不错
  回复  引用  查看    
#24楼  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 同样可以通过验证.请猫冬测试一下.

  回复  引用    
#25楼  2008-05-17 11:39 | 曹鹏飞 [未注册用户]
不知道在有母版页的时候怎样使用?
  回复  引用    
#26楼 [楼主] 2008-05-17 17:34 | 猫冬      
@曹鹏飞
你把代码写到js文件里,再在Page_Load注册到页面里就可以了
  回复  引用  查看    
#27楼 [楼主] 2008-05-17 17:37 | 猫冬      
@Hurray
好像是这样的,我会把扩展库里的正则表达式修正过来的。
等待下个版本一起更新。
不过,这个不影响插件的使用。
如果你有比较好的正则表达式来校验电话号码的,请贴上来谢谢!!
  回复  引用  查看    
#28楼  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()">
  回复  引用    
#29楼  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 里的值),怎么设置呢?
  回复  引用    
#30楼 [楼主] 2008-05-21 11:27 | 猫冬      
@chyoqin
data参数跟$.ajax里的data是一样的
你可以用下面3种方式写:
"id1=value1&id2=value2"

{id1:value1,id2:value2}
或者你用form.js插件,可以可以避免特殊字符的烦恼
$("#id1,#id2").fieldSerialize() 这里取到的值跟第一种方法一样
  回复  引用  查看    
#31楼  2008-05-21 11:34 | chyoqin [未注册用户]
谢谢回复,
我用data:'act=check&username='+$('#u_username').val(), (//这是参照本页例子的.)只能接收到act='check',收不到username的值,
用data:'act=check&username=test',就能收到.
我用的是2.9版本
  回复  引用    
#32楼 [楼主] 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里用户名的写法
  回复  引用  查看    
#33楼  2008-05-21 12:49 | chyoqin [未注册用户]
"在服务器端,你可以通过Request.querystring["id"]来取值 "这个我在PHP里是取不到值的,Request.querystring在PHP里没定义呀,它是在那个文件中的吗?
不明白在Default.aspx.cs里怎么能取到值呢?
Request.querystring,是不是aspx的一个属性呀?
不懂asp.

  回复  引用    
#34楼 [楼主] 2008-05-21 13:10 | 猫冬      
@chyoqin
Request.querystring["id"]是asp.net里的语法
php里应该有接收get过来参数的方法的吧!
  回复  引用  查看    
#35楼  2008-05-21 13:45 | chyoqin [未注册用户]
有呀,但就是收不到值,
PHP里传递的是name,要程序里传过去的是id吧?我把input里的name 和id 改为同名就可以了.
  回复  引用    
#36楼 [楼主] 2008-05-21 20:47 | 猫冬      
@chyoqin
你的认识是正确的
在asp.net里默认name和id是一样的
  回复  引用  查看    
#37楼 [楼主] 2008-05-21 21:27 | 猫冬      
@Nickol
你好,你提的建议,已经在新版本2.9.3里已经实现
具体实现是用了$.inArray()
谢谢你的建议和支持
  回复  引用  查看    
#38楼  2008-05-21 21:40 | ゞ智者.千虑      
更新了,支持一下..!
  回复  引用  查看    
#39楼 [楼主] 2008-05-21 21:57 | 猫冬      
@ゞ智者.千虑
谢谢你的支持!
感谢你以前提供演示空间!
再次感谢!
  回复  引用  查看    
#40楼  2008-05-22 08:28 | 高海东      
很好的客户端验证
  回复  引用  查看    
#41楼  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
,检测用户名时,不管输入正确或错误,总是提示“服务器没有返回数据,可能服务器忙,请重试”

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

  回复  引用    
#51楼  2008-06-03 16:03 | Hurray [未注册用户]
请教猫冬,我注册时有手机号和邮箱二个文本框,至少要填写其中一个。这个验证如何写啊?
  回复  引用    
#52楼 [楼主] 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;
}



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

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


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

  回复  引用    
#58楼 [楼主] 2008-06-04 12:16 | 猫冬      
@六六
先感谢你提供ip4正则表达式.
你说的大小写的问题都是正则表达式扩展库里的错误,我会仔细测试一下的.
还是那句话:如果有比较好的校验表达式,也请提供,谢谢。
  回复  引用  查看    
#59楼  2008-06-06 16:14 | 求知无傲      
好好用下。
  回复  引用  查看    
#60楼  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 : "正在对用户名进行合法性校验,请稍候..."
});
  回复  引用    
#61楼 [楼主] 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里用户名的写法
  回复  引用  查看    
#62楼  2008-06-13 16:05 | Hurray [未注册用户]
谢谢猫冬,已经搞定。
  回复  引用    
#63楼  2008-06-16 16:24 | yangzhenpeng [未注册用户]
插件不错,我想用可就是15位身份证无法验证。哎。就是这一句不对。你看怎么改改。if(!/^\d{17}(\d|x)$/i.test(sId)) return "你输入的身份证长度或格式错误"; 测试身份证:412829770410052 340504661108023 340521650411053 希望能给我回个邮件。十分感谢。要不然我就只能放弃啦。
  回复  引用    
#64楼 [楼主] 2008-06-16 20:02 | 猫冬      
@yangzhenpeng
这个页面就是用2种方式来实现身份证的校验.
http://www.yhuan.com/formvalidator/demo5.htm
  回复  引用  查看    
#65楼  2008-06-19 14:58 | maoy [未注册用户]
表单全部验证成功后,进行异步提交所有数据,以得到返回信息显示,
应该如何做?
  回复  引用    
#66楼 [楼主] 2008-06-19 17:00 | 猫冬      
@maoy
$.formValidator.initConfig函数里,有个属性onSuccess,表示该组校验通过后的回调函数

或者你直接在按钮的单击事件或form的submit事件里
if($.formValidator.PageIsValid('1'))
{
$.ajax(你的异步请求)
}
else
{
return false;
}
  回复  引用  查看    
#67楼 [楼主] 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;
}
  回复  引用  查看    
#68楼  2008-06-23 12:35 | 星辉      
博主,说声谢谢!

请问怎么3.0的下载不载了不对啊,下载后的rar只有2k?
  回复  引用  查看    
#69楼  2008-06-23 13:14 | 今晚打老虎 [未注册用户]
博主,你真是太有才了,找了N久,终于让我找到救星了,刚Down下来准备应用到我的代码中,太感谢你了!!!
  回复  引用    
#70楼 [楼主] 2008-06-23 16:57 | 猫冬      
@星辉
ver3.0还没有发布出来,但是在演示的空间里已经更新成3.0
虽然有部分功能还在商讨中,但是目前3.0版本是没有bug的,请放心使用。
已经放文件到博客上,请重新下载
  回复  引用  查看    
#71楼 [楼主] 2008-06-23 16:58 | 猫冬      
@今晚打老虎
感谢你的支持,希望能多提建议,谢谢!
  回复  引用  查看    
#72楼 [楼主] 2008-06-23 17:00 | 猫冬      
ver3.0版本下载连接
http://www.cnblogs.com/Files/wzmaodong/formValidator3.0.rar
需要的人可以下载,如何使用请看更新记录和用户手册
  回复  引用  查看    
#73楼  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" />


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