随笔-24  评论-2191  文章-0  trackbacks-20

jQuery formValidator表单验证插件开源了!!含API帮助、源码、示例

插件主页: http://www.yhuan.com/ 求助帖,每帖必应

升级记录

QQ交流群:74106519

 

2011/5/22 jQuery formValidator 4.0.1 ver

规范插件的命名:
1、对插件所有函数相关属性的命名采用Camel风格命名,即:第一个单词首字母小写,其余单词首字母大写。本次变动比较大,为了规范插件的命名,希望大家谅解。
2、所有DEMO引用jQuery类库的时候,类库后面直接跟了版本号——表示插件支持的最高类库版本号

 

为ajaxValidator函数增加以下功能:
1、解决页面回退之后,控件获得焦点,不做任何修改,失去焦点后,强行验证
2、formValidator的ajax参数(是否要提交到服务器)默认值改为false,但是ajaxValidator校验的控件无条件提交服务器
3、在url后面增加随机数。name名字为rand
4、提交之前有数据正在服务器端校验,不允许提交。如果在点击提交按钮之前,有触发ajaxValidator校验的,在提交的时候默认不允许,可以自定义错误提示,在initConfig函数里配置参数(submitAfterAjaxPrompt,默认值“当前有数据正在进行服务器端校验,请稍候”)
5、如果在点击提交之前,如果一个控件一次都没有校验过,而且含有 ajaxValidator校验,会自动触发,而且异步返回成功之后,会再次触发提交

 

其他新增和修改:
1、修改initConfig里的error事件,errorlist参数的输出顺序,跟控件的校验顺序相同,如果正确,对应位置的值为null
2、initConfig增加参数submitButtonID,表示触发验证的按钮ID,如果配置了formID,则formID 优先
3、reloadAutoTip、resetTipState和pageIsValid函数的参数(validatorGroup)为空,则默认当做"1"处理
4、删除函数triggerValidate
5、intiConfig增加属性inIframe,表示页面是否嵌在iframe里,默认false
6、alertMessage模式下,默认自动修复错误,即autoModify=true
7、增加FAQ里的提问
8、修改用户手册
9、demo1里增加2选1的范例、把错误集中显示的范例;
10、demo2里触提交用submitButtonID属性


解决以下BUG:
1、regexValidator第一次验证通过后,后面输入非法字符也验证通过的问题
2、处理升级之后,demo1里的“全角字符当做1个长度”按钮出错的问题
3、修复retSetTipState重置的时候,全部重置成onshow的问题,有些刚开始默认是通过的
4、解决捆绑ajaxValidator校验的控件,在页面回退之后,控件获得焦点,不做任何修改,失去焦点后,验证错误的问题
5、解决自动构建提示层示例全部团聚在左上角的问题,详见demo6.html内嵌在demo.html里的代码调用

 

 

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


1、现场演示

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

 

2、jQuery formValidator插件主要功能

 

  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. 支持输入格式的校验。
  13. 支持换肤

 

3、jQuery formValidator插件 API帮助文档

帮助文档请点击这里 


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


http://files.cnblogs.com/wzmaodong/formValidator4.0.1.zip


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 猫冬 阅读(84517) 评论(813) 编辑 收藏

评论:
评论共9页: 上一页 1 2 3 4 5 6 7 8 9 
#710楼 2009-09-20 22:33 | wangyong969      
刚看到楼上的朋友说建一个群,楼主又不在,我这里又空了一个群,愿意加的话,大家看到的加进来,讨论一下了,群号:6325231
 回复 引用 查看   
#711楼 2009-09-23 15:34 | TAONY      
在输入的文本中只要有空格就会判断为空。这个挺麻烦的事情,不知道怎么改了。。
 回复 引用 查看   
#712楼 2009-09-23 16:33 | 兰[未注册用户]
这个,可以验证密码强度吗??(⊙_⊙)?
 回复 引用   
#713楼 2009-09-24 11:55 | pic_name      
jquery-1.3.2.min.js
采用这个版有错,
比如:287行:len = $("input[@type='"+sType+"'][@name='"+srcjo.attr("name")+"'][@checked]").length;
这个写法不兼容了,改为
len = $("input:" + sType + "[name='" + srcjo.attr("name") + "'][checked=true]").length;
勉强通过了,可是提示出问题了,出现组checkbox,只能提示最后一组。

 回复 引用 查看   
#714楼 2009-09-24 14:54 | pic_name      
嘻嘻,解决了,是jquery-1.3.2.min.js
自己的问题

 回复 引用 查看   
#715楼 2009-09-24 19:46 | 涛仔[未注册用户]
如何将所有的错误信息集中显示在某处?
 回复 引用   
#716楼 2009-09-25 21:24 | mark35[未注册用户]
@Teresa Mo
试试看只给需要的按钮绑定验证。不在<form>里面绑定onsubmit。

 回复 引用   
#717楼 2009-09-27 00:11 | 啊啊啊啊啊啊[未注册用户]
有个问题,就是我做上一步,下一步的操作,当我返回上一步是,用户名的默认是有值的时候,这个时候Ajax校验就出问题了,之前的验证可用的用户名这个时候提示不可用,怎么处理。
 回复 引用   
#718楼 2009-10-05 19:52 | mark35[未注册用户]
@啊啊啊啊啊啊
目前程序无法处理,必须更新一下那个输入框的内容(比如添加一个字符然后再删除)ajax认证才会通过

 回复 引用   
#719楼 2009-10-13 17:04 | 周德伦      
怎么我一刷新 又提交一次啊?
 回复 引用 查看   
#720楼 2009-10-14 20:06 | form check[未注册用户]
mark35,你可不可以想办法把
"
有个问题,就是我做上一步,下一步的操作,当我返回上一步是,用户名的默认是有值的时候,这个时候Ajax校验就出问题了,之前的验证可用的用户名这个时候提示不可用,怎么处理。"这个问题改一下他的代码吗! 这个问题确实很多人都遇到了.

 回复 引用   
#721楼 2009-10-15 23:10 | 杨鬼[未注册用户]
更新时必须更新一下那个输入框的内容(比如添加一个字符然后再删除)ajax认证才会通过..希望能解决..
 回复 引用   
#722楼 2009-10-18 20:04 | lwb33[未注册用户]
引用 杨鬼:更新时必须更新一下那个输入框的内容(比如添加一个字符然后再删除)ajax认证才会通过..希望能解决..


兄弟你说的这个问题,我也有碰到,非常苦恼。
想了个将就的方法。

this.RegisterStartupScript("value", " <script type='text/javascript'> $('#txtUsersLoginName').focus();$('#txtUsersLoginName').val('" + user.UsersLoginName + "');</script>");

用脚本对控件获得一下焦点。再用脚本赋值。这样最少不会出现那个错误的明显bug,很希望插件能解决这个问题

我觉得
1。以上的明显bug。体现在作者的demo1.htm 上,作者居然没发现
2。ajax 认证url:不支持拼接字符串很不方便

 回复 引用   
#723楼 2009-10-23 17:14 | codeMaker      
如果对表单中的某个提交按钮不想进行验证,如何设置?

急!!!!!!

zhengxinzhe@sohu.com

 回复 引用 查看   
#724楼 2009-10-23 17:25 | codeMaker      
引用Teresa Mo:你好,当一个需要验证的页面里有多个按钮时,我想只一个按钮进行验证,其他按钮不验证(其中有要提交到服务器端的按钮),请问怎样设置?谢谢


 回复 引用 查看   
#725楼 2009-10-26 21:18 | mark35[未注册用户]
@codeMaker #724
在这个按钮的onclice事件中执行验证

 回复 引用   
#726楼 2009-10-27 17:26 | mark35[未注册用户]
@form check #720
想到一个办法,抽时间看看。

 回复 引用   
#727楼 2009-10-28 18:27 | shaiyue[未注册用户]
用此插件的ajax验证中文用户名一直没通过,英文名称正常,请问是否是不支持中文验证!
 回复 引用   
#728楼 2009-10-29 18:15 | mark35[未注册用户]
@shaiyue
支持中文验证呀。是不是你页面/后台/数据库不是UTF-8编码?

 回复 引用   
#729楼 2009-11-02 17:33 | checkbox[未注册用户]
$(":checkbox[name='select']").formValidator({tipid:"ckTip",onshow:"请选择维修内容(至少选一个)",onfocus:"你至少选择1个",oncorrect:"恭喜你,你选对了"}).inputValidator({min:1,onerror:"你选的个数不对"}); <input type="checkbox" name="select" id="ck" value="1" runat="server" />
<input type="checkbox" name="select" id="ck1" value="2" runat="server" />


加了runat="server"后,验证控件不显示了?

 回复 引用   
#730楼 2009-11-02 21:40 | mark35[未注册用户]
@checkbox
我这儿直接添加个runat="server"属性验证正常呀

 回复 引用   
#731楼 2009-11-05 11:18 | 午夜香吻      
在asp.net里,设置debug:true,submitnce:true,验证成功后按钮是变灰色的,因为是调试模式,当然无法响应按钮的点击事件。
但是设置debug:false,submitnce:true,却也无法执行按钮的点击事件,请问是何原因?
<form id="form1" runat="server">
<div>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox><div id="TextBox1Tip">
</div>
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" />
</div>
</form>
后台:
protected void Button1_Click(object sender, EventArgs e)
{
System.Threading.Thread.Sleep(5000); //延迟5秒
Response.Write("执行了!");
}

 回复 引用 查看   
#732楼 2009-11-05 20:03 | mark35[未注册用户]
@午夜香吻
submitonce false 校验通过后,是否灰掉所有的提交按钮
这个功能就是校检成功后禁用提交按钮功能呀

 回复 引用   
#733楼 2009-11-09 10:25 | dixiashi      
DateTimeMask.js中的【EnterMoveToNext】貌似没有起到相应的作用啊,我的测试环境是【IE8】,【jQuery DateTimeMask 2008-02-04】,【jquery-1.3.2-vsdoc2.js】
 回复 引用 查看   
#734楼 2009-11-09 16:32 | 伈随峰飞[未注册用户]
希望猫冬能加个功能,比如说邮箱,如果输入提示格式是否正确,如果不输入就不提示!
我的邮箱gaofeng_monica@163.com

 回复 引用   
#735楼 2009-11-11 13:08 | 浪子阿水[未注册用户]
请问,在弹出Iframe 里的提示的位置问题解决了吗?现在用的版本在弹出的iframe中,会全部显示到左上角,要刷新一次才正常显示.
 回复 引用   
#736楼 2009-11-12 16:47 | Coppola      
引用ddd:好象用在asp.net页面上有问题,如果一个页面有多个服务器控件BUTTON(不是HTML的INPUT),始终点击每个BUTTON都会进行验证,启用分组验证后一个按钮还会验证两次。
<br/>因为一个页面不可能仅有一个BUTTON的,而通常验证只需要提交时才用到,每页都加分组也很麻烦,请问这个如何处理?

我也遇到这问题。楼主帮忙看看。

 回复 引用 查看   
#737楼 2009-11-15 13:52 | 快乐强强[未注册用户]
猫冬,你好,
在使用中发现一个问题,我的form最后一项验证码是使用的ajax验证,如果在输入完验证码后,立刻点击submit按钮,此时验证码框先blur失去焦点调用ajax进行验证,验证通过后自动提交form,在内网环境下是没有问题的,但如果在外网环境下,ajax的验证如果比较慢,则需要在zjax验证完成之后,再多点一次submit按钮才能提交form,又什么好的解决办法没有?

 回复 引用   
#738楼 2009-11-18 00:10 | lwb33[未注册用户]
@mark35
不知道楼主什么时候出更新版

 回复 引用   
#739楼 2009-11-18 11:24 | mark35[未注册用户]
引用浪子阿水:请问,在弹出Iframe 里的提示的位置问题解决了吗?现在用的版本在弹出的iframe中,会全部显示到左上角,要刷新一次才正常显示.

这个似乎无解。因为在初始化时iframe里面的元素都是隐藏状态取不到位置信息(都是0),所以当iframe显示后全部都使用了0于是挤到一块,再刷新就正常(这时候被绑定了验证的元素都有了位置信息)。

 回复 引用   
#740楼 2009-11-18 11:25 | mark35[未注册用户]
引用快乐强强:
猫冬,你好,
在使用中发现一个问题,我的form最后一项验证码是使用的ajax验证,如果在输入完验证码后,立刻点击submit按钮,此时验证码框先blur失去焦点调用ajax进行验证,验证通过后自动提交form,在内网环境下是没有问题的,但如果在外网环境下,ajax的验证如果比较慢,则需要在zjax验证完成之后,再多点一次submit按钮才能提交form,又什么好的解决办法没有?

这是程序流程问题,除非修改程序否则无解。

 回复 引用   
#741楼 2009-11-20 09:16 | 1113333[未注册用户]
@mark35
鞢在士大夫甘劳而无功

 回复 引用   
#742楼 2009-11-22 18:06 | mark35[未注册用户]
@1113333
呵呵,方便别人就是方便自己。
博主估计是闭关修炼去了。自己时间太紧不然就帮着打点补丁了。

 回复 引用   
#743楼 2009-11-23 17:12 | 路ren[未注册用户]
@mark35
可以采用预加载的方式,不要隐藏,而是设置一个magin-left:-9999,让元素不显示出来,实际上已经加载了

 回复 引用   
#744楼 2009-11-23 17:27 | 张永存(Jerry)      
看了这个验证控件感觉非常好,
但却有一个非常要命的问题,不知道作者是否有这种需求?

因为您的验证控件是对id进行验证的

但往往我们在做验证的时候都是对form里面的name进行的
但是这个验证是对应id的,当我网页和很多内容,而且有多个form进行验证的时候就很麻烦
比如我一个页面更新
父级(Master)
子级(Clinet)
<form id="frmMaster">
<input type="text" name="ID" value="1">
<input type="text" name="Name" value="">
<input type="submit" value="提交" >
</form>
<form id="frmClient">
<input type="text" name="ID" value="1">
<input type="text" name="Name" value="">
<input type="submit" value="提交" >
</form>
------------------
如果像上面的话用JqueryValidate是很好的来做验证,因为他是根据name来做验证的
但是如果用你这个的话我不得不用
父级(Master)
子级(Clinet)
<form id="frmMaster">
<input type="text" id="ID" value="1">
<input type="text" id="Name" value="">
<input type="submit" value="提交" >
</form>
<form id="frmClient">
<input type="text" id="ID1" value="1">
<input type="text" id="Name1" value="">
<input type="submit" value="提交" >
</form>
这样就很造成很大的麻烦

如果能更改为对name进行验证的话,实在是太感谢了
谢谢

 回复 引用 查看   
#745楼 2009-11-29 11:55 | 22222222222222222222222222222[未注册用户]
在ajaxValidator验证时默认将本控件加到URL后传到后端
如果想传多几个其它控件的值过去一起验证
怎么设?
这个问题 知道的回复一下 非常感谢!
qq 315136798

 回复 引用   
#746楼 2009-12-01 09:57 | 水李[未注册用户]
引用mark35:
引用浪子阿水:请问,在弹出Iframe 里的提示的位置问题解决了吗?现在用的版本在弹出的iframe中,会全部显示到左上角,要刷新一次才正常显示.

这个似乎无解。因为在初始化时iframe里面的元素都是隐藏状态取不到位置信息(都是0),所以当iframe显示后全部都使用了0于是挤到一块,再刷新就正常(这时候被绑定了验证的元素都有了位置信息)。



那如何让页面重新刷新一次呢???是否可以通过appendto的方法解决这个问题,直接加到被检测表单后面?

 回复 引用   
#747楼 2009-12-01 11:22 | mark35[未注册用户]
@22222222222222222222222222222
我已经贴过补丁代码了呀。你找找留言,要不就是在3.5版本页面的留言里面。

 回复 引用   
#748楼 2009-12-02 22:28 | kumaws      
我现在的项目全程用你的formValidator做验证,环境是asp.net。
所有表单都做在FormView中,我同时对Insert与Update两种状况做验证处理(允许同名ID),Insert还好,但是Update时会对一些控件做绑定数据,例如“姓名”的textbox绑定上显示了数据,但是formvalidator对这个textbox还是显示的提示状体,并没有显示验证通过的状态,必须在textbox里点那么一下再点出来才可以通过。
请问遇到数据初始绑定,我怎么处理?
(DefaultPassed()针对空也会通过)

 回复 引用 查看   
#749楼 2009-12-09 13:13 | Alfa.wu      
日期验证貌似有问题。

问题1: 日期验证有问题

formValidator.js 第 562 行:
if(lb_go_on){val = new Date(val);setting.min=new Date(setting.min);setting.max=new Date(setting.max);};

当 type 是 date 的情况
val 被转换后的值为: NaN

导致在验证的时候出现bug
不知道为什么,第一次是好的。后来都是不行的,就是在验证时间的 min 和 max 的时候。后来就都无效了。

问题2: 日期加时间验证有问题
当 type 是 datetime 的情况的时候。

formValidator.js 第 561 行:
if(type=="datetime"){lb_go_on = isDate(val)};

这里的判断应该是 isDateTime吧,我怎么试都是 false 所以应该是 isDateTime
另外 第 562 行:
if(lb_go_on){val = new Date(val);setting.min=new Date(setting.min);setting.max=new Date

datetime 类型输入时,这里也不管怎么转都变成了。 NaN 了。

请博主帮忙看一下!
------------------------------------

自己已经解决但是不知道这样是否可行,是否符合规范!请博主指点:

将 formValidator.js 的 第 561 行:

if(type=="datetime"){lb_go_on = isDate(val)};

改成:

if(type=="datetime"){lb_go_on = isDateTime(val)};


将第 562 行 注释,就可以了,
因为问题就出在把 val 转换成 日期型的时候出错了!



 回复 引用 查看   
#750楼 2009-12-14 14:12 | Chrome Loo      
最近碰到这种表单验证的问题,感谢楼主。
 回复 引用 查看   
#751楼 2009-12-16 12:29 | 一地在[未注册用户]
你好,我在用这一控件做验证的时候,发现如果其中要是用了一个日历控件填写日期的话,那么当我FORM中什么都不填写的时候,点提交会有刷新页面,然后页面显示一个日历.请问这是为什么?我个人觉得是因为没有通过验证,日期栏获取焦点后显示了日历.可是我没有好的解决办法,请问你有什么建议吗?
 回复 引用   
#752楼 2009-12-21 09:56 | sanata      
对不去 ,我想问下, 是否能把所有错误信息显示在一个地方呢?
比如我都放在右上角,然后多一条错误信息,就换行多写一条。(其他所有信息都不需要)

然后哪些提示信息我希望从xml配置文件中读取,可以吗?

谢啦~~~

 回复 引用 查看   
#753楼 2009-12-21 15:03 | gundumw100[未注册用户]
String userId=request.getParameter("userId");
ajaxValidator 传递的参数是中文会乱码(userId)


$("#userId").ajaxValidator({
type : "post",
url : "login.portal?action=checkUser",
//data:"userId="+$("#userId").val(),//这里得不到value datatype : "html",
success : function(data){
var text=$(data).text();
if(text=="yes"){
return true;
}else{
return false;
}
},
error: function(){alert("服务器没有返回数据,可能服务器忙,请重试");},
onerror : "该用户名不可用,请更换用户名",
onwait : "正在对用户名进行合法性校验,请稍候..."
});

 回复 引用   
#754楼 2009-12-21 18:19 | Daniel Chow      
.ajaxValidator 如果返回时xml格式数据时,封装后的success: function(data) {} 这里的data都不是xml的了,不能直接用jQuery解析,下个版本希望解决!我目前额外加了一个把string转成xml的函数.
 回复 引用 查看   
#755楼 2009-12-22 11:39 | 末日危机[未注册用户]
我用了这个插件,感觉是非常好用,但是碰到一个问题,就是我在页面中,用到了DWR的联动下拉框,而这两个脚本文件有发生冲突,请问,怎么能解决这个问题,期待你的速回,可以恢复到我的邮箱里面吗?十分感谢。。。。。
 回复 引用   
#756楼 2009-12-22 14:40 | 钱峰qianfeng      
引用末日危机:我用了这个插件,感觉是非常好用,但是碰到一个问题,就是我在页面中,用到了DWR的联动下拉框,而这两个脚本文件有发生冲突,请问,怎么能解决这个问题,期待你的速回,可以恢复到我的邮箱里面吗?十分感谢。。。。。

呵呵,我有遇到过这样的情况,望能解决

 回复 引用 查看   
#757楼 2009-12-22 14:48 | gundumw100[未注册用户]
我现在还在用V3.1版本的,想把以前的工程里用到的formValidator换成3.5的,可是直接覆盖上去就不能验证了(3.1里可以验证的),难道用法两样了?
 回复 引用   
#758楼 2010-01-09 10:36 | 忆起      
楼主,你好,在使用fromvalidator过程中感觉很棒,但是在用ajaxvalidator验证用户名的唯一性时,发现一个问题:如果页面加载时给用户名input赋值后,即使这个用户名数据库中并不存在,依然提示《onerror : "该用户名不可用,请更换用户名",》里面的提示信息,麻烦楼主解惑,非常感谢!
 回复 引用 查看   
#759楼 2010-01-27 14:22 | 励冰      
猫冬
你用的是哪一种JS压缩工具啊。

 回复 引用 查看   
#760楼 2010-02-02 17:34 | <font color=red>Truly</font>      
压缩器很有意思参数名加起来就是packer, 楼主的这个插件用了一下发现一个bug,当onshow指定为空时,会出现tip显示不出来,对应js3.3版本代码位置为153行:
tip.hide();
这里隐藏之后,即使出错了tip也不会再显示了。在166行后面增加
tip.show();
代码后解决此bug。 压缩后的js位置为搜索"C.15(t)"改为"C.15(t);C.4T()"即可(注意搜索的是引号内的部分)。

对代码修改可采用下列方法,适用于3.3版
var arr=3.3版本的字符串数组
var a = 62;
var c = 327;//3.3版数组长度
e=function(c){
return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};
alert(e(arr('showTooltips')));//即转换为压缩后的短码

 回复 引用 查看   
#761楼 2010-02-03 12:57 | <font color=red>Truly</font>      
又发现一个bug,如果配置alertmessage为false时,调用pageIsValid则只会focus到第一个出错的控件,但不会显示错误消息。此bug也要修改源码,在393行附近修改为
elem.focusforpagevalid=true;// truly add
$.formValidator.showMessage(returnObj);
在750行附近修改为
var tipjq = $("#"+tip);
if(this.focusforpagevalid) return;//truly add
762行附近修改为
jqobj.bind(setting.triggerevent, function(){
this.focusforpagevalid = false;// truly add


formValidator_min.js文件修改方法:
{4(!6.d){1N=1N+N+"^"}后增加h.E=f;
4(!n.Y){5 2O=$("#"+C);后增加4(c.E)g;
I.T(3.3H,8(){后增加c.E=j;

 回复 引用 查看   
#762楼 2010-02-03 14:46 | <font color=red>Truly</font>      
最后一贴:从3.3升级到3.5。
主要是根据jquery选择器语法变化做了3处调整:

line 288
len = $("input[@type='"+sType+"'][@name='"+srcjo.attr("name")+"'][@checked]").length;
to:
len = $("input[type='"+sType+"'][name='"+srcjo.attr("name")+"']:checked").length;

line
len = $("select[@name="+elem.name+"] option[@selected]").length;
to
len = $("select[name="+elem.name+"] option:selected").length;

line
if(initConfig.submitonce){$("input[@type='submit']").attr("disabled",true);}
to
if(initConfig.submitonce){$(":submit").attr("disabled",true);}


对应压缩后的代码调整为:
D=$("2u[@q=\'"+16+"\'][@1M=\'"+r.1u("1M")+"\'][@45]").B;
to
D=$("2u[q=\'"+16+"\'][1M=\'"+r.1u("1M")+"\']:45").B;


D=$("Q[@1M="+h.1M+"] 47[@48]").B;v}g D},
to
D=$("Q[1M="+h.1M+"] 47:48").B;v}g D},

4(n.2b){$("2u[@q=\'2X\']").1u("2z",f)}}
to
4(n.2b){$(":2X").1u("2z",f)}}


升级到3.5后的完整代码(加了我前2贴提到的bug补丁)
http://files.cnblogs.com/Truly/formValidator3.5p.rar

 回复 引用 查看   
#763楼 2010-02-23 15:21 | vincent`      
在验证时如果直接敲回车的话没进行离开焦点时的判断 即便输入正确效检也通不过
 回复 引用 查看   
#764楼 2010-03-16 20:37 | bravf      
我问下哈:<input type='file'>能够验证图片的格式吗?怎么验证?
 回复 引用 查看   
#765楼 2010-05-31 10:48 | aweibsb      
这个JS验证不安全

只要我阻止JS运行 这些全部失效

点 submit 照样传值 这个验证起什么作用

喜欢玩 firefox 组件的人都知道

 回复 引用 查看   
#766楼 2010-05-31 10:50 | aweibsb      
BUG :

firefox Noscript 组件

阻止JS运行 验证失效

 回复 引用 查看   
#767楼 2010-06-03 14:28 | Chloev      
有谁知道怎么找到楼主或者mark35?谁有没有他们的邮箱之类的联系方式?
 回复 引用 查看   
#768楼 2010-06-17 17:06 | 我不抽烟      
希望楼主快点解决ajax验证的问题啊,基本上都遇到这种情况:
当表单有ajax验证时,第一次是可以正常通过验证,提交表单,假如出现异常返回表单页面,再次验证,如不改变ajax验证项数据,ajax验证项会提示数据不可用,也就是在onerror状态了

 回复 引用 查看   
#769楼 2010-06-20 10:47 | 毒手卷青天      
您好。我正在做formValidator3.5与struts2.18的对接。
$(document).ready(function(){
//$.formValidator.initConfig({onerror:function(){alert("校验没有通过,具体错误请看错误提示")}});
$.formValidator.initConfig({formid:"form1",onerror:function(msg){alert(msg)},onsuccess:function(){alert('ddd');return false;}});
$("#username").formValidator({onshow:"请输入用户名,只有输入\"maodong\"才是对的",onfocus:"用户名至少6个字符,最多10个字符",oncorrect:"该用户名可以注册"}).inputValidator({min:6,max:10,onerror:"你输入的用户名非法,请确认"}).regexValidator({regexp:"username",datatype:"enum",onerror:"用户名格式不正确"})
.ajaxValidator({
type : "get",
url : "usernameAction.action",
datatype : "json",
success : function(data){
if( data == "1" )
{
return true;
}
else
{
return false;
}
},
buttons: $("#button"),
error: function(){alert("服务器没有返回数据,可能服务器忙,请重试");},
onerror : "该用户名不可用,请更换用户名",
onwait : "正在对用户名进行合法性校验,请稍候..."
});
下面是struts2的主要方法。但我在地址栏访问usernameAction.action时候返回的是null.当用上面代码访问的收购就根本没就调用这个服务器上的方法。不知道是为什么?
public String execute(Userinfo u)
{
try {
HttpServletRequest request = this.getHttpRequest();
String username = request.getParameter("username");
System.out.println(this.result
+ "已经取到了username的值");
u.setUsername(username);
Map<String, Integer> map = new HashMap<String, Integer>();
map.put("data", ius.getUserByUsername(u));
JSONObject jo = JSONObject.fromObject(map);
this.result = jo.toString();
System.out.println(this.result
+ "已经生成了返回到前台的json数据result");

} catch (Exception e) {
e.printStackTrace();
}
return SUCCESS;
}

 回复 引用 查看   
#770楼 2010-06-20 14:27 | 深山老林      
请教:如果客户端不是用提交按钮,而是使用JavaScript提交的,如何能够拦截住?例如这样的代码 $("#submitButton").bind('click', function () {
document.getElementById('form1').submit();
});

 回复 引用 查看   
#771楼 2010-06-24 10:29 | 咖啡时光      
输入15位正确的身份证号码还是会报错
 回复 引用 查看   
#772楼 2010-06-28 16:26 | 小小明      
有问题了3.5 ,我在验证时间是,弹出错误提示,但是我一点确定,页面就跳了一下,然后就只显示时间控件了,希望楼主快点解决呀!
我的邮箱:wutao0315@qq.com

 回复 引用 查看   
#773楼 2010-07-19 10:56 | kiwxbj      
验证邮箱错误后,不能获得输入焦点,循环弹出对话框
 回复 引用 查看   
#774楼 2010-08-12 11:28 | crazysheep      
@我不抽烟
引用mengqingyu:发现个bug 如果用这个插件的ajax验证 当他访问服务器端的时候 这个表单的验证码会丢失 如果不用插件的ajax验证码会存在在session里但是只要用了一次 session里的验证码就丢了 而且我试过在第一次ajax请求时候取得session一样是null
<br/>

遇到同样的问题,望楼主尽快解决。

 回复 引用 查看   
#775楼 2010-09-16 16:11 | jforeverg      
这个插件很不错,已经将其收录到http://ajax.open-open.com/ajax20100811233759.htm
 回复 引用 查看   
#776楼 2010-09-23 16:17 | migrant      
验证用户名是否存在时如果是修改,则没有去后台验证。修改不了。
 回复 引用 查看   
#777楼 2010-10-11 15:21 | builderman      
博主,这个插件现在支持最新版的jquery吗, 1.4.2
 回复 引用 查看   
#778楼 2010-11-03 15:14 | sunlovesea      
你好:如果有两个按钮,其中一个按钮不想进行表单验证该如何设置啊?谢谢!
 回复 引用 查看   
#779楼 2010-11-05 17:02 | wilsonn      
垃圾代码。敢生不敢养的、哗众取宠的东西。
猫冬这个名字,注定是被万人唾骂的。

 回复 引用 查看   
#780楼 2010-11-19 18:28 | 柯苦      
今天试用了下,很不错。
不过有个哭笑不得的问题,我不知道3.5a版本解决没有,仅在这里提一下吧
关于 .ajaxValidator 方法里我给 url参数的值是 "?app=member&do=ajax" 这种单入口的网址格式时,ls_url.indexOf("?")这样检测到的正好=0, 无奈把文件名+上了 ~ 不是大问题~ 不过建议把 ls_url = ls_url + (ls_url.indexOf("?")>0?("&"+ parm) : ("?"+parm));里改为>-1会不会稳妥些?

 回复 引用 查看   
#781楼 2010-11-20 21:27 | humble      
兄弟,你的插件是基于什么协议开源?

可以用于公司的商业开发吗?

 回复 引用 查看   
#782楼 2010-12-01 16:18 | 相公      
页面两个按钮如何设置,如一个提交,一个重置,点击重置时候也验证!!
 回复 引用 查看   
#783楼 2010-12-02 15:19 | lhhnet      
身份证验证不行了额...发现有个用户的身份证是正确的,输入显示错误...Q550725314
 回复 引用 查看   
#784楼 2010-12-05 15:56 | humble      
楼主,你的这些插件,我能用于日常在公司中的开发吗?
 回复 引用 查看   
#785楼 2010-12-13 15:58 | SatanULtra      
楼主,我现在用自动构建提示层,只想在验证失败的时候提示,其他情况不显示提示层,我该怎么做?我把onshow设置为""就任何提示都不显示了。
 回复 引用 查看   
#786楼 2010-12-16 14:46 | 非正常人,刚吃了药      
username:"^\\w+$",//用来用户注册。匹配由数字、26个英文字母或者下划线组成的字符串

问题:
现在不能输入中文,中英文混合也不可以,我需要实现这个功能;

 回复 引用 查看   
#787楼 2010-12-24 17:19 | 涩勤荣      
lz,请问下用ajax验证的用户名和密码同时验证的时候,servlet中根本就只能得到密码的值,无法得到前面已验证过的用户名的值,这个问题如何解决,谢谢

 回复 引用 查看   
#788楼 2010-12-29 14:25 | winnerfat      
请问一下:
比如说:在注册的时候,增加一个“取消”按钮,怎么才能使这个按钮不触发 验证啊

 回复 引用 查看   
#789楼 2010-12-29 14:26 | winnerfat      
@SatanULtra
把 onshow: " "(记住:中间有一个空格,不是"")

 回复 引用 查看   
#790楼 2011-01-15 20:28 | klain      
一个页面里不能放两个form?
多个较验组那个例子也是一个form里的。

 回复 引用 查看   
#791楼 2011-01-18 11:53 | tangyun      
猫兄:
请问我怎么做日期的比较啊?

 回复 引用 查看   
#792楼 2011-02-24 14:42 | bluesky4485      
可以用来验证URL的有效性吗?
就是验证人家填写的URL地址是否正确。

 回复 引用 查看   
#793楼 2011-03-10 11:41 | 蔡头      
楼主:辛苦了,问个问题,你现在每个页面都是用的type="submit"提交,如何实现用type="button"提交<input type="submit" name="button" id="button" value="提交" />改成<input type="button" onclick="tj()" name="button" id="button" value="提交" />或者用<a href="javascript:tj()">提交</a>

 回复 引用 查看   
#794楼 2011-04-07 10:28 | yiduan      
楼主你好,我发现一个小Bug
在demo1里验证Select的时候,如果不给默认值,那么初始化的时候select的值是“请选择一个学历”,但是验证信息是“正确”,验证框架没有起到作用

 回复 引用 查看   
#795楼 2011-04-12 11:51 | 吴超      
楼主你好,我发现一个非常致命的问题,
我在使用ajax验证时出现这种情况:
当表单有ajax验证时,第一次是可以正常通过验证,提交表单,假如出现异常返回表单页面,再次验证,如果不改变ajax验证项数据,ajax验证项会提示数据不可用,也就是在onerror状态。
代码如下:
ajaxValidator({
type : "post", url : "/geopmt/CheckProjectServlet", datatype : "json",
data : "name="+encodeURI(jQuery("#name").val()), success : function(data){
if( data == "1" ){
return false; } else {
return true;
}
},
buttons: jQuery("#subBtn"),
error: function(){alert("服务器没有返回数据,可能服务器忙,请重试");},
onerror : "该项目名称已经存在或者不可用,请更换项目名称",
onwait : "正在对项目名称进行合法性校验,请稍候..."
});

 回复 引用 查看   
#796楼[楼主] 2011-04-30 14:19 | 猫冬      
@yiduan 没有你描述的问题
 回复 引用 查看   
#797楼 2011-05-17 17:00 | JayQ      
怎么4.0下载下来运行老提示:"'guid'为空或不是对象","URL:formValidator4.0/jquery_last.js"
 回复 引用 查看   
#798楼 2011-06-30 09:27 | 秦时 明月      
楼主,我可以免费使用在我们公司的项目中吗?
 回复 引用 查看   
#799楼[楼主] 2011-07-02 23:54 | 猫冬      
@秦时 明月
当然可以

 回复 引用 查看   
#800楼 2011-07-06 15:19 | bicabo      
data:"act=existsEmail&email="+$.trim($("#txtEmail").val())+"&t="+Math.random(),
用ajaxValidator时,data参数值如上所示,$.trim($("#txtEmail").val()) 这个为什么得不到值?

 回复 引用 查看   
#801楼 2011-07-25 14:16 | xin_ny      
谢谢了!!!!
 回复 引用 查看   
#802楼 2011-08-11 14:51 | wxs9250      
你的案例里面,出生日期,如果在火狐浏览器下,选择2000年以后的日期,会报如下错误“日期必须在"1900-01-01"和"2000-01-01"之间”,请修正
 回复 引用 查看   
#803楼 2011-09-10 10:57 | 夏末流云      
引用吴超:
楼主你好,我发现一个非常致命的问题,
我在使用ajax验证时出现这种情况:
当表单有ajax验证时,第一次是可以正常通过验证,提交表单,假如出现异常返回表单页面,再次验证,如果不改变ajax验证项数据,ajax验证项会提示数据不可用,也就是在onerror状态。
代码如下:
ajaxValidator({
type : "post", url : "/geopmt/CheckProjectServlet", datatype : "json",
data : "name="+encodeURI(jQuery("#name").val()), success :...


我也遇到差不多的,这个验证唯一性的时候,就是我不动那个需要校验的对象,然后就会报错说被使用了。要不,楼主弄一个默认通过的?

 回复 引用 查看   
#804楼 2011-09-24 11:49 | 让心去飞      
很久没关注WEB了。现在又发现你这个插件,很不错。
在测试的过程中,有一个问题没解决,请问该验证控件支持验证fckeditor富文本编辑器吗?

 回复 引用 查看   
#805楼 2011-11-28 14:44 | 丁小贝      
@让心去飞貌似不支持
 回复 引用 查看   
#806楼 2011-11-29 17:53 | 云淡风轻-.net      
我提个小问题,在编辑的时候,文本框中有值,但初次进入页面的时候,提示停留在onShow阶段,其实文本框的值已经符合要求了,应该是onCorrect状态,我用的版本是4.01
 回复 引用 查看   
#807楼 2011-12-06 11:21 | 小路 < Coder      
在使用ajax验证的时候,如果输入框的内容已经存在,把鼠标放到输入框,不做任何修改再离开,则会提示错误

SOS~~~~~

 回复 引用 查看   
#808楼 2011-12-22 17:08 | yjc2629498      
formValidator 的empty:false,和inputValidator的min:0有些矛盾貌似?还请猫哥赐教
 回复 引用 查看   
#809楼 2012-01-06 11:10 | roloxa      
很厉害
 回复 引用 查看   
评论共9页: 上一页 1 2 3 4 5 6 7 8 9 
昵称:猫冬
园龄:5年
粉丝:73
关注:2
<2008年2月>
272829303112
3456789
10111213141516
17181920212223
2425262728291
2345678

搜索

 
 

常用链接

我的标签

随笔档案

相册

最新评论

阅读排行榜