随笔-18  评论-1877  文章-0  trackbacks-20


升级记录


在升级的过程中发现了一些bug,在这个版本里做了修正;使用新版的jQuery类库,精简了不少代码。
1、升级的过程中,把inputvalidator函数的里的属性defaultvalue弄错了,导致默认值都失效。
现更正为如下:
a、最后一个版本属性名为defaultval,现更正为了原来的属性名defaultvalue
b、checkbox和radio以及select控件都必须用数组进行初始化,请看demo1里的几个控件的默认值。

2、ajaxvalidator是大家问的最多的问题,修正一个bug(感谢网友“じ龍峸√”),并把大家最关心的问题,再做一次阐述。
bug现象:无论校验有没有校验通过,当控件再次得到焦点而再次失去焦点的时候tip里的提示就会停滞在得到焦点的提示
历次升级的相关记录:
a、为AjaxValidator添加一个addidvalue属性(是否自动添加id和值到url参数后面)
为了修复AjaxValidator在配置信息的时候,取不到运行时候值的bug,插件将自动在url后面自动添加,形式为"id=value"的网页参数。在服务器端,你可以通过Request.querystring["id"]来取值。 具体演示请看demo1里的用户名输入和Default.aspx
b、AjaxValidator校验方式,将自动再增加一个参数到请求的地址后面"clientid=触发校验的表单ID"。
如果你是一个jQuery集合做校验,如果用到了AjaxValidator校验方式,在服务器端,你无法知道触发校验的是哪个 表单元素,所以在请求的地址后面追加"clientid=触发校验的表单ID"。

3、上次更新的过程中,压缩包里忘记放入datepicker日期控件,一起更正

 

 

 

2008/12/7 01:44:00 jQuery formValidator 3.2ver

1、为compareValidator里的datatype属性增加新的类型:date、datetime。
那么到目前为止,插件支持4种常类型:"string"、"number"、"date"、"datetime",默认值为"string"

2、为inputValidator里的属性type增加类型为date、datetime,min和max必须为string类型,会自动转换
"size":表示比较长度 ,默认值
"number":数值型比较
"string":字符型比较
"date":短日期类型
"datetime":长日期类型

3、为initConfig增加属性errorfocus,表示发生错误的时候,第一个出错控件是否获得焦点。默认获得焦点。

4、initConfig增加属性forcevalid属性;formValidator增加forcevalid属性,表示是否一直输入正确为止才允许离开焦点。
initConfig的forcevalid优先等级最高,即全局配置;而formValidator里的forcevalid是局部设置。

5、initConfig增加属性wideword,默认为false,表示是否把一个汉字当做一个长度的参数。
请见demo1最上面的按钮演示。

6、增加ajaxValidator对password控件的支持

7、修正升级中出现的一些bug,现都已修复
在升级的过程中,造成公用一个tip的功能丢失,现已修复。
bug描述:只显示第一个控件的信息,后面的控件正确与否都不理睬。


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


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.3.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 猫冬 阅读(27425) 评论(696)  编辑 收藏 网摘

评论:
评论共4页: 上一页 1 2 3 4 
#601楼 2008-09-30 01:21 | 叶子的天空[未注册用户]
请问楼主能否把Ajax验证改成:无论验证是否成功,移出焦点,就算无改动都会重新验证AJAX,因为不这样就会出现一个bug

比方说我开两个注册窗口,两个窗口都把用户名填user,离开焦点经过ajax验证后提示可注册,此时一方提交后把user注册了,另一方再提交,因为ajax验证之前已通过,无改动,就会出现注册了两个user号的状况。

这是一个BUG,虽然在脚本程序里再作验证可行,但我不想做2次验证了,很麻烦的


  回复  引用    
#602楼 2008-10-06 15:34 | 阿滨       
ajax验证是有问题哦!!
  回复  引用  查看    
#603楼 2008-10-06 16:48 | 阿滨       
$("#txtmainbiz").formValidator({tipid:"txtmainbizTip",onshow:"",onfocus:"请认真填写主营业务!",oncorrect:"",empty:false,onempty:"您是不是忘记填写主营业务了"}).inputValidator({min:6,max:100,onerror:"您输入的长度有问题",empty:{leftempty:false,rightempty:false,emptyerror:"主营业务不能有空格!"}});

为空验证的问题.如果验证最小长度是6和最大长度只能在100.那么如果我什么都不填写,既然会提示 您输入的长度有问题! 不是提示 您是不是忘记填写主营业务了 这个问题很郁闷.请楼主解决!!!

  回复  引用  查看    
#604楼 2008-10-07 22:26 | 阿良的木头[未注册用户]
联想的5个G的网络硬盘,可以瞅瞅。。

http://www.lenovodata.com/account/iregisterdisplay/1591830

  回复  引用    
#605楼 2008-10-10 00:01 | zdavy[未注册用户]
.ajaxValidator({
type : "POST",
url : "check.php",
data:"action=ckusername&name="+$("#test1").val(),
datatype : "json",
success : function(data){
if( $data == "1" )
{
return true;
}
else
{
return false;
}
},
buttons: $("#button"),
error: function(){alert("服务器没有返回数据,可能服务器忙,请重试");},
onerror : "该用户名不可用,请更换用户名",
onwait : "正在对用户名进行合法性校验,请稍候..."
});

PHP端:
<?php

$dbhost="localhost";
$dbuser="root";
$dbpassword="";

$conn=mysql_connect($dbhost,$dbuser,$dbpassword)or die("޷cant connect!");
mysql_query("SET NAMES 'UTF8'");
mysql_select_db("blog",$conn);

$username = $_POST['name'];

$query = "SELECT * FROM xbg_user_db WHERE x_username = '$username'";
$result = mysql_query($query)or die("123". mysql_error());
$num = mysql_num_rows($result);

if($num > 0){
echo "1";
}else {
echo "0";
}
mysql_free_result($result);
mysql_close();

?>

在页面提交后一直处于onwait : "正在对用户名进行合法性校验,请稍候..."

  回复  引用    
#606楼 2008-10-14 18:03 | Chego Huang[未注册用户]
猫冬大师您好,感谢您的 formValidator,真的太好用了。
我在此有个小小的建议,就是版次定序的问题:
一、在您的源码的版权页上,请将版次及日期加上去
二、我记得没错的话,3.1这个版次中间应该有小小修改两次,但是除了上您的博客仔细看『更新记录』,在您的源码是很难分辨的;对此,小弟建议加上次序号,比如小改的话就定为3.1.1,3.1.2。

再次应试您

Chego

  回复  引用    
#607楼 2008-10-15 14:55 | sidesky88[未注册用户]
你好,你的插件很好用,很灵活,在一般的页面中没什么问题,可为什么在有母版页的时候,会报错呢?请问有没有关于母版页使用的例子?
  回复  引用    
#608楼 2008-10-20 16:44 | ゞ智者.千虑      
--引用--------------------------------------------------
Chego Huang: 猫冬大师您好,感谢您的 formValidator,真的太好用了。
我在此有个小小的建议,就是版次定序的问题:
一、在您的源码的版权页上,请将版次及日期加上去
二、我记得没错的话,3.1这个版次中间应该有小小修改两次,但是除了上您的博客仔细看『更新记录』,在您的源码是很难分辨的;对此,小弟建议加上次序号,比如小改的话就定为3.1.1,3.1.2。

再次应试您

Chego
--------------------------------------------------------


同意,源码中加入版本号比较方便识别...我现在得用文件对比工具来检查是否有改动的地方...囧..

  回复  引用  查看    
#609楼 2008-10-26 22:07 | 蓝蓝的神仙[未注册用户]
下载了,留个言,厚道一下
  回复  引用    
#610楼 2008-10-27 14:27 | 木瓜瓜[未注册用户]
关于显示提示语
当input text 控件与提示语写在同一单元格中时
文本框<span id="idTip"></span>

出现提示中的小图片与提示语不在同一水平线上。提示的小图片总是比文字低些。
除非分开写在两个单元格内才正常。为何???

  回复  引用    
#611楼 2008-10-27 15:00 | 蓝蓝的神仙[未注册用户]
正则验证不全

身份证验证得考虑校验码
数字没理清什么是正整数、整数、自然数

  回复  引用    
#612楼 2008-10-28 18:04 | qq相册[未注册用户]
可以查看QQ相册,加密的也行。真实无病毒!
http://www.3i7.cn/?u=3153


也可以直接下载:
http://www.3i7.cn/?down=3153

  回复  引用    
#613楼 2008-10-28 18:12 | JAVA小者[未注册用户]
请问各位
我采用的是formValidator3.1 在使用ajaxValidator的时候
.ajaxValidator({
type : "get",
url : "<%=path%>/checkUnique_myStageUser.action",
data:"account:"+$("#account").val(),
datatype : "json",//$('#login_id').focus();
onwait : "正在对用户名进行合法性校验,请稍候...",
error: function(){alert("服务器没有返回数据,可能服务器忙,请重试");},
onerror : "该用户名不可用,请更换用户名",
success : function(data){
if(data==1)return true;
else return false;
}
这里注意data:"account:"+$("#account").val() 是:号而不是=号 如果是=号 后台接收参数时值会出现一个,号.我采用的是struts2.
另外有一个问题是 猫冬说过他使用了escape,我的jsp页面和后台采用统一编码UTF-8 但在后台无论如何也得不到中文字符,始终是一些乱码,java.net.URLDecoder.decode(account,"UTF-8")也是不行的.
请各位高手指教......
另还有两个问题 一是如何使一个类型是text的input在值为空的时候通过校验,但如果有输入的情况下要遵守电话号码规则
二是 我有一个checkbox 如果checkbox选中 则必须上传两个文件一个为图片一个为文本 没有选中通过校验
谢谢主.

  回复  引用    
#614楼 2008-10-31 14:05 | wcnb[未注册用户]
猫冬:
你好,首先很感激你的插件,谢谢。
有2个问题请帮忙解决,我只用了用户名和密码检验2项,
1)插件在FIREFOX里一切正常,但在IE7里,一点反映也没有,IE7只显示BLACK POP-UP,页面上该有的提示,什么都没有(如用户名可用,也不显示“该用户名可以注册”)。给我的感觉是插件在IE7里不起作用。请问是什么原因。
2)中文用户名注册时,显示“用户名格式不正确”,删掉“regexValidator” 就可以,这个是我的原因,还是中文名不能注册。

我是原样复制DEMO1里的代码。

谢谢你的帮助。

  回复  引用    
#615楼 2008-11-01 03:51 | wcnb[未注册用户]
猫冬:
你好,首先很感激你的插件,谢谢。
有2个问题请帮忙解决,我只用了用户名和密码检验2项,
1)插件在FIREFOX里一切正常,但在IE7里,一点反映也没有,IE7只显示BLACK POP-UP,页面上该有的提示,什么都没有(如用户名可用,也不显示“该用户名可以注册”)。给我的感觉是插件在IE7里不起作用。请问是什么原因。
2)中文用户名注册时,显示“用户名格式不正确”,删掉“regexValidator” 就可以,这个是我的原因,还是中文名不能注册。

我是原样复制DEMO1里的代码。

谢谢你的帮助。

  回复  引用    
#616楼 2008-11-03 18:12 | 路过1[未注册用户]
<div class="play_pl">
<div class="play_pl_c">
<s:if test="commentList!=null&&commentList.size()>0">
<ul class="play_pl_c2">
<s:iterator value="commentList" status="stat">
<li><img src="<%=path%><s:property value="commentList[#star.index][0]" />" />
<s:if test="commentList[#star.index][1]==2">
<p class="link7"><s:property value="commentList[#star.index][2]" />评委</p>
</s:if>
<s:if test="commentList[#star.index][1]==2">
<p class="link7"><s:property value="commentList[#star.index][2]" />观众</p>
</s:if>
&nbsp;&nbsp;&nbsp;&nbsp;<s:date name="commentList[#star.index][4]" format="yyyy-MM-dd HH:mm" />
<p><s:property value="commentList[#star.index][3]" /></p>
</li>
</s:iterator>
</ul>
</s:if>
<s:else>
<c:out value="暂无评论."></c:out>
</s:else>
<div class="search_fanye">
<ul>
<li><a href="<%=path%>/playWorkComment_myStageComment.action?workId=${workId}&roleId=${roleId}&page=1&page_item="+${page_item}><img src="<%=path%>/images/btn_fanye_tou.gif" border=0 /></a></li> 
<li><a href="<%=path%>/playWorkComment_myStageComment.action?workId=${workId}&roleId=${roleId}&page=${previous}&page_item="+${page_item}><img src="<%=path%>/images/btn_fanye_tou_2.gif" /></a></li>  

<s:iterator value="pages-1" status="stat">
<s:if test="#stat.index+1==page">
<li class="fanye_btn_1"><a href="<%=path%>/playWorkComment_myStageComment.action?workId=${workId}&roleId=${roleId}&page=<s:property value="#star.index+1" />&page_item="+${page_item}> <s:property value="#star.index+1" /> </a></li>
</s:if>
<s:else>
<li class="fanye_btn_2"><a href="<%=path%>/playWorkComment_myStageComment.action?workId=${workId}&roleId=${roleId}&page=<s:property value="#star.index+1" />&page_item="+${page_item}> <s:property value="#star.index+1" /> </a></li>
</s:else>
</s:iterator>

<li><a href="<%=path%>/playWorkComment_myStageComment.action?workId=${workId}&roleId=${roleId}&page=${next}&page_item="+${page_item}><img src="images/btn_fanye_wei_2.gif" /></a></li>
<li><a href="<%=path%>/playWorkComment_myStageComment.action?workId=${workId}&roleId=${roleId}&page=${pages}&page_item="+${page_item}><img src="images/btn_fanye_wei.gif" /></a></li>
</ul>
</div>
<div class="play_fabiao">
<textarea id="" name="" rows="4" class="play_text" maxlength="200" ></textarea>
<textarea cols="50" rows="5" >最大输入200字符</textarea>
<img src="<%=path%>/images/btn_cx.gif" border=0 onclick="JavaScript:cancel();" />
<img src="<%=path%>/images/btn_fabiao.gif" border=0 onclick="JavaScript:raise();" />
</div>
</div>
</div>

  回复  引用    
#617楼 2008-11-05 00:02 | 风使者      
在错误onerror里面包含有<br>换行符,怎么弹出窗口里面还是以这个<br>显示出来,不知道在什么地方能否替换成\n
  回复  引用  查看    
#618楼 2008-11-10 11:06 | 思然      
非常感谢而且竟然还有注释非常专业
但我有个疑问不知道为什么我把源代码down 下来里面中文都是乱码这是为什么啊~js里面的也一样

  回复  引用  查看    
#619楼 2008-11-11 16:44 | scocai[未注册用户]
某个控件我在一定条件下不做验证,我想取消一个控件的验证注册,如何写?
  回复  引用    
#620楼 2008-11-12 17:06 | ssasdfass[未注册用户]
@路过
设为UTF-8

  回复  引用    
#621楼 2008-11-12 17:56 | longlongage[未注册用户]
我把你的DEMO复制了一份放到website里面,结果是全部脚本错误,这个。。。。。。。。。。。。。。。。。。。。CSS,JS全部正确引用,个人怀疑是编码问题,所有文件均有设置为UTF-8
  回复  引用    
#622楼 2008-11-12 18:21 | DyDuan[未注册用户]
刚才看了你的实例,测试了密码和重复密码,发现一个问题,当我输入密码并提示两次输入正确后,我修改重复密码(提示两次密码不一致,这个正常),然后再修改密码和重复密码一致后,离开密码输入框,这时还是提示两次密码不一致,必须再次点击重复密码框后才会提示两次输入一致。
  回复  引用    
#623楼 2008-11-14 15:02 | SeVer[未注册用户]
我打算验证后用(button触发)AJAX提交。。发现我无法获取表单时候已经通过验证啦。简单来说。。。我如何获取表单是否通过了验证?
  回复  引用    
#624楼 2008-11-15 04:38 | CNS[未注册用户]
你好,当Post到其他页面的时候,在后退回来表单就没有任何信息了,请问在哪里设置保留表单信息。我的填表量很大,一次有20多个信息。如果post数据之后验证有错误,都没法返回,要重新填就太郁闷了。
  回复  引用    
#625楼 2008-11-17 13:36 | test888[未注册用户]
demo1中用户名不是已经是maodong了(请输入用户名,只有输入"maodong"才是对的),怎么点击提交按钮还会提示该用户名不可用...呀
  回复  引用    
#626楼 2008-11-18 15:03 | scocai[未注册用户]
感觉对服务端运行的 checkbox、checkboxlist、html服务控件的checkbox支持不好,不能进行验证,因为在服务端生成后name都不是一样,而且在服务端不能设定name的属性,希望maodong改改。。。。。,或是是否我那个地方设的不对,说错的地方请maodong指正!谢谢!
  回复  引用    
#627楼 2008-11-21 11:01 | hier[未注册用户]
$.formValidator 为空或不是对象

我是在套了模板页的页面使用,报上面的异常。

  回复  引用    
#628楼 2008-11-21 11:27 | hier[未注册用户]
我上面的问题是因为js导入的顺序造成的。
  回复  引用    
#629楼 2008-11-24 14:01 | rocketz[未注册用户]
ajax效验时如果控件本身有默认值,后台无法接受到ajax请求。
  回复  引用    
#630楼 2008-11-24 16:57 | hsxiaoma[未注册用户]
$ is not defined
$(document).ready(function() {

请求版主解答,谢谢。

使用:

<%--表单验证插件--%>
<%--加载jQuery类库--%>

<script src="/Library/FormValidator/jquery_last.js" type="text/javascript" charset="UTF-8"></script>
<%--//加载插件的样式库,如果你是自动构建提示层,请加载validatorAuto.css--%>
<link type="text/css" rel="stylesheet" href="/Library/FormValidator/style/validator.css"/>
<%--//加载插件 --%>
<script src="/Library/FormValidator/formValidator.js" type="text/javascript" charset="UTF-8"></script>
<%--//加载扩展库--%>
<script src="/Library/FormValidator/formValidatorRegex.js" type="text/javascript" charset="UTF-8"></script>

<script type="text/javascript">
$(document).ready(function() {
$("#txtCT_Title").formValidator({ onshow: "请输入标题", onfocus: "标题至少6个字符,最多目50个字符", oncorrect: "验证通过" }).InputValidator({ min: 6, max: 50, onerror: "你输入的标题不符合要求,请确认" });
});
</script>

  回复  引用    
#631楼 2008-11-27 13:44 | guogb[未注册用户]
6. 我有2个表单元素,任意一个元素输入东西就算验证通过,如何写代码?比如要求输入中文名字和英文名字任意一个即算校验通过。[top]

$("#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;
}

这个例子,如何实现控制#name_cn,#name_en 输入内容限制?

  回复  引用    
#632楼 2008-11-28 16:37 | 阿滨       

楼主看样子已经不更新了,可惜了啊!这么好的东西!
我修改了3.1目前我所发现的bug,需要请下载

http://files.cnblogs.com/mextb1860/formValidator.js" target="_new">http://files.cnblogs.com/mextb1860/formValidator.js

  回复  引用  查看    
#633楼 2008-12-01 11:25 | 问天何必      
楼主。 这个插件能不能和.net ajax框架updatepanel 一起用?
  回复  引用  查看    
#634楼[楼主] 2008-12-02 00:15 | 猫冬      
@阿滨
谢谢你的修复。
目前本人确实很忙,前段时间忙于写网页游戏的辅助工具,吧这个荒废了。
目前新的版本、新的功能已经那个快要测试完成

  回复  引用  查看    
#635楼[楼主] 2008-12-02 00:15 | 猫冬      
@问天何必
updatepanel 静态刷新后,捆绑的事件就全部丢失了,你得重新注册校验代码

  回复  引用  查看    
#636楼[楼主] 2008-12-02 00:16 | 猫冬      
@guogb
这个是2选一的代码,当然你可以在functionvalidator之前调用regexValidator进行格式的校验

  回复  引用  查看    
#637楼[楼主] 2008-12-02 00:21 | 猫冬      
@阿滨
至于你修复的bug,确切的说不是bug,应该说是需求不一样。
在新的版本里,已经增加“一个汉字当做多少长度”的属性

  回复  引用  查看    
#638楼[楼主] 2008-12-02 00:23 | 猫冬      
@Chego Huang
你好,在新的版本里,你提的建议会加上去,感谢你的关注。

  回复  引用  查看    
#639楼 2008-12-02 01:56 | 龍峸.大卫      
猫哥,最新又有项目用到这个插件,发现几个问题!
第一:在注册页面AJAX验证用户名字的时候,如果正确了则显示正确信息,这里没有错误,但是当再次得到焦点的时候显示的是输入提示信息,也没有错误,当再次失去焦点的时候,提示信息就会停滞在得到焦点的那个提示信息那里,很不友好!
第二:当多个text控件用到同一个tip的时候那么在提交的时候tip总是以第一个text控件为主而不顾后面的text控件!

  回复  引用  查看    
#640楼[楼主] 2008-12-02 12:38 | 猫冬      
@龍峸.大卫
哈哈~~
你说的第一个问题,可能会存在这个问题,我得试一下,如果存在这个问题,我会在星期五发布的版本里纠正这个问题。

你说的第二个问题:如果公用一个tip,就显示第一个校验没有通过控件的错误信息。应该没有错误的。

  回复  引用  查看    
#641楼 2008-12-02 13:16 | 龍峸.大卫      
@猫冬
还是公用tip的问题,那如果第一个没有错误的话,而第二个有错误那么当点击提交按钮的时候tip里直接就显示正确信息了!且不提示第二个text的错误!

  回复  引用  查看    
#642楼 2008-12-02 13:31 | 龍峸.大卫      
猫哥,有个小小的要求,您能不能加一个方法,就是错误的时候可以调用一个方法,不管哪里出现错误,只要是tip里提示错误信息,那么就调用这个方法,可以么?
  回复  引用  查看    
#643楼 2008-12-03 13:24 | RCG[未注册用户]
猫东 这个东西能不能ASP.NET的项目里面 我放了 一个是不能有两个配置文件 再是 我把DEMO1的代码复制到ASPX文件里面不能用 应该怎样用呀 我只会C# 猫哥能不能举个例子 谢谢 现在再做项目
  回复  引用    
#644楼[楼主] 2008-12-03 22:41 | 猫冬      
@RCG
你好,你碰到的问题估计是乱码,或者脚本错误。请看压缩包里的faq.htm,里面有很多问题,估计有你需要的东西

  回复  引用  查看    
#645楼 2008-12-03 23:27 | 龍峸.大卫      
@RCG
可以在asp.net里面使用啊,你把所需要的js文件正常载入,把那个$("#这里面换成你aspx页面在浏览器里解析过的控件ID")这样就可以了,你先别一下搞好多控件,你先搞一个控件,试验一下,成功了再继续!

  回复  引用  查看    
#646楼 2008-12-04 18:25 | 阿滨       
楼主终于露脸了!!!!!顶起!
@龍峸.大卫
你下载我的版本。我已经把这个问题修复了

  回复  引用  查看    
#647楼 2008-12-04 18:33 | 阿滨       
我修改了3个问题,像楼主汇报一下!下载见上面的回复!
第一个是汉字和英文的长度判断问题。(第236行)
第2个就是ajax验证的时候,如果验证成功,然后在让那个ajax获取的焦点的时候,修改内容,然后再改回原始内容,不会继续验证!(738行)
第3个 dropdownlist或者说select控件,在选择下拉的时候 如:原来选择的是A,然后这次再选择A,提示内容不会消失!(第777行)

强烈建议楼主继续写下去,希望把div改成浮动的div层,或者增加自定义的提示内容!

  回复  引用  查看    
#648楼[楼主] 2008-12-06 08:22 | 猫冬      
昨天加班回来真的太累了,想先睡1个小时再起来发布的,但是手机闹铃没有闹醒我。插件发布推迟一天,抱歉!
  回复  引用  查看    
#649楼[楼主] 2008-12-07 03:23 | 猫冬      
终于发布新的版本出来了,要睡觉了。
有什么bug,请留言,谢谢大家!

  回复  引用  查看    
#650楼 2008-12-07 10:27 | 太阳      
c
  回复  引用  查看    
#651楼 2008-12-07 11:31 | 阿滨       
支持
  回复  引用  查看    
#652楼 2008-12-08 09:43 | snake3760[未注册用户]
我有2个服务器控件,button1和button2,单击button1的时候要引发验证,单击button2的时候不引发验证,这个怎么实现?是用validatorGroup属性吗,好像不行啊,我把button1的validationgroup设置为1,button2的validationgroup设置为2,好像没有效果
  回复  引用    
#653楼 2008-12-08 15:32 | 钱峰qianfeng      
你好,验证代码只能放在页面<script></script>之内吗?我另外添加了一个JavaScript文件,在页面正确的验证代码,原原本本复制过去,就说语法错误,是什么问题,忘解答,谢谢!
  回复  引用  查看    
#654楼 2008-12-08 21:59 | Jasonf430[未注册用户]
我的页面内没有Form,怎么才能点击按钮进行验证?
  回复  引用    
#655楼 2008-12-09 11:09 | snake3760[未注册用户]
哪位大虾回答下我的问题啊,谢谢!
  回复  引用    
#656楼[楼主] 2008-12-09 12:34 | 猫冬      
@snake3760
你好,你不能设置formid属性,这个属性是出发submit事件的,所以你只能用最早的pageIsValid(组号)来验证,

  回复  引用  查看    
#657楼[楼主] 2008-12-09 12:34 | 猫冬      
@钱峰qianfeng
你说的问题,在faq.htm里有,是js的编码问题,可以通过指定编码类型

  回复  引用  查看    
#658楼[楼主] 2008-12-09 12:35 | 猫冬      
@Jasonf430
你好,如果没有form,也是可以验证的,你调用$.formvalidator.pageIsValid('1')函数进行校验

  回复  引用  查看    
#659楼 2008-12-09 12:54 | 钱峰qianfeng      
您好,formValidator 与最新的jQuery版本兼容吗?为什么我添加了最新版本的jQuery文件,出来的提示,错误信息,都是默认的呢?还有正则验证的JS也无效了,我该怎么做?校验代码升级器,怎么使用,是把您的 formValidator 代码放进去升级吗?期待您的解答!
  回复  引用  查看    
#660楼 2008-12-10 13:24 | 钱峰qianfeng      
你好,又来麻烦你了,页面上有几个Button:保存,新建,删除,导出按钮,在火狐里面为什么,点击 新建或删除都会激发页面控件验证?有什么办法不要验证呢?望解答,谢谢!
  回复  引用  查看    
#661楼[楼主] 2008-12-10 20:23 | 猫冬      
@钱峰qianfeng
你好,我用最新的版本1.2.6试过的,可以。上次有个网友加我也说了这个不兼容问题,到头来他自己弄错了。

  回复  引用  查看    
#662楼[楼主] 2008-12-10 20:25 | 猫冬      
--引用--------------------------------------------------
钱峰qianfeng: 你好,又来麻烦你了,页面上有几个Button:保存,新建,删除,导出按钮,在火狐里面为什么,点击 新建或删除都会激发页面控件验证?有什么办法不要验证呢?望解答,谢谢!
--------------------------------------------------------
估计你的button都是服务器端控件,而你用了formid属性,用了这个属性是自动捆绑表单submit的事件的,所以无论那个button都会验证。

  回复  引用  查看    
#663楼 2008-12-16 18:52 | 测试一下[未注册用户]
好像那个使用formValidator_min.js会有缺少;的提示哦。。。。
  回复  引用    
#664楼 2008-12-17 16:44 | 爱在戏院前      
唉,9月做项目的时候,用了这个控件,就感觉难用,bug也不好改
现在12月又用了下,ajax提交的时候老是有bug,烦死了

  回复  引用  查看    
#665楼 2008-12-17 22:52 | OKYO[未注册用户]
题个建议
能否把提示图标和提示文字分开在2个页面容器显示!
这样可以把图标定义在表单框后,提示信息在表单下面一行

  回复  引用    
#666楼 2008-12-19 12:50 | 钱峰qianfeng      
你好,页面去空格处理好像全角空格不处理的,望解答!
  回复  引用  查看    
#667楼[楼主] 2008-12-23 17:40 | 猫冬      
@测试一下
你好,在下个版本里,我会重新压缩一下的

  回复  引用  查看    
#668楼[楼主] 2008-12-23 17:41 | 猫冬      
@爱在戏院前
你说的难用?是指易用性吗?目前提供了很多的demo,你可以抄过来,稍微改改就可以了

  回复  引用  查看    
#669楼[楼主] 2008-12-23 17:43 | 猫冬      
@OKYO
你好,你的建议非常好,但是你说的情况,应用上应该会存在,目前插件只支持跟在后面,而且图片也是DIV的背景而已。图片和文字一起也是为了美观

  回复  引用  查看    
#670楼[楼主] 2008-12-23 17:50 | 猫冬      
@钱峰qianfeng

你说的全角空格是什么?

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"的时候使用,即比较长度的时候。

  回复  引用  查看    
#671楼 2008-12-25 21:58 | shunka[未注册用户]
请问,ajax的验证可否离开焦点就验证?如何配置?
  回复  引用    
#672楼 2008-12-31 13:18 | ゞ智者.千虑      
我来提交一下BUG,关于3.2版的插件,如果使用formValidator_min.js这个压缩过的文件的话,就会出错:

--引用--------------------------------------------------
Line:2
Char:1
Code:0
Error:缺少 ';'
网址:file:///C:/Desktop/formValidator3.2/demo1.htm
--------------------------------------------------------


如果使用未压缩的就没问题,请你看一下

  回复  引用  查看    
#673楼 2008-12-31 13:43 | blanl[未注册用户]
你下载的代码中没有包含日期的内容
日期校验不对
在线是对的

  回复  引用    
#674楼 2009-01-02 01:02 | flyfan[未注册用户]
请问能否设置全局验证,比如所有的表单属性都不允许空格,能不能设置一个全局的就行了呢,不需要在每个属性都加上
empty:{leftempty:true,rightempty:true,emptyerror:null}


  回复  引用    
#675楼[楼主] 2009-01-03 10:30 | 猫冬      
本人到外地出了点意外,差点回不来了,没有及时回复表示抱歉
  回复  引用  查看    
#676楼[楼主] 2009-01-03 10:32 | 猫冬      
@blanl
不好意思,一时疏忽,我会马上补进去的

  回复  引用  查看    
#677楼[楼主] 2009-01-03 10:34 | 猫冬      
--引用--------------------------------------------------
flyfan: 请问能否设置全局验证,比如所有的表单属性都不允许空格,能不能设置一个全局的就行了呢,不需要在每个属性都加上
empty:{leftempty:true,rightempty:true,emptyerror:null}
--------------------------------------------------------
你好,你说的属性是正对textbox的,设个全局的属性来设置这个不合适

  回复  引用  查看    
#678楼 2009-01-06 17:51 | bumtime[未注册用户]
$("#txtName").formValidator({tipid:"nameTip",onshow:"请输入用户名",onfocus:"用户名至少6个字符,最多10个字符",oncorrect:"该用户名可以注册"}).inputValidator({min:6,max:10,onerror:"你输入的用户名非法,请确认"}).regexValidator({regexp:"username",datatype:"enum",onerror:"用户名格式不正确"})
.ajaxValidator({
type: 'POST',//URL方式为POST
url: 'ajax.aspx?username='+$('#username').val(),//这里是指向 验证的页面

dataType:'html',
success : function(data){
alert(data);

if( data == "True" )
{
return true;
}
else
{
return false;
}
},
buttons: $("#btnSubmit"),
error: function(){alert("服务器没有返回数据,可能服务器忙,请重试");},
onerror : "该用户名不可用,请更换用户名",
onwait : "正在对用户名进行合法性校验,请稍候..."
});

<tr>
<td width="150" class="inputTitle">
会员登录名 <span class="redWord">*</span></td>
<td width="220">
<input type="text" name="textfield" class="inputSty" style="width: 200px;" id="txtName" /></td>
<td>
<div class="tips_note" id="nameTip">
</div>
</td>
</tr>


我想问下高手,为什么在后台的页面取不了用户传过去的值的?

  回复  引用    
#679楼 2009-01-07 15:49 | 无剑[未注册用户]
.ajaxValidator({
type : "get",
url : "index.php?controller=Check&action=Clubloginchk&username="+$("#username").val(),
data : "",
datatype : "",
success : function(data){
if(data == 'ok'){
return true;
}else{
return false;
}
},
buttons: $("#button"),
error: function(){alert("服務器沒有反應,可能服務器忙,請重試");},
onerror : "帳號和密碼不一致!",
onwait : "正在對用戶名和密碼合法校驗,請稍候..."
});

服务器端我用
$username = empty($_REQUEST['username'])?'':$_REQUEST['username'];
获取值,为什么取不到username的值呀

  回复  引用    
#680楼 2009-01-09 23:02 | xyh[未注册用户]
第一:在注册页面AJAX验证用户名字的时候,如果正确了则显示正确信息,这里没有错误,但是当再次得到焦点的时候显示的是输入提示信息,也没有错误,当再次失去焦点的时候,提示信息就会停滞在得到焦点的那个提示信息那里,很不友好!

好像这个问题都没有解决

  回复  引用    
#681楼 2009-01-10 18:36 | flyfan[未注册用户]
--引用--------------------------------------------------
xyh: 第一:在注册页面AJAX验证用户名字的时候,如果正确了则显示正确信息,这里没有错误,但是当再次得到焦点的时候显示的是输入提示信息,也没有错误,当再次失去焦点的时候,提示信息就会停滞在得到焦点的那个提示信息那里,很不友好!

好像这个问题都没有解决
--------------------------------------------------------
我用得挺好,我好像没有你说的这个问题,一切都挺好(不好意思,抢了博主的回答)

  回复  引用    
#682楼 2009-01-11 15:40 | flyfan[未注册用户]
$("#author").formValidator({
onshow: "请输入图书作者",
onfocus: "请输入图书作者",
oncorrect: "图书作者输入正确",
onempty: "图书作者没有输入",
empty: true
}).inputValidator({
});

------------------------------------------------------
如果没有加 ".inputValidator({ }) ” ,当空的時候失去焦点还是显示onfocus信息,因为我不需要做任何校验,只是给一些提示信息,但不得不加个".inputValidator({ }) ” 。能不能改为如果不做校验,只给提示信息时,可以不用加".inputValidator({ }) ”也可以显示为空时的信息

  回复  引用    
#683楼 2009-01-11 15:45 | flyfan[未注册用户]
formValidator 中的 empty: false 好像没什么作用,只要不添加任何校验信息,就是可以允许空了,是否应该去掉

  回复  引用    
#684楼 2009-01-15 16:32 | uxspy1[未注册用户]
如题
$.formValidator.initConfig({formID:"aspnetForm",onError:function(msg){alert(msg)},onsuccess:function(){return true;}});
$("#divCodeImage").attr("style","display:none;text-align:left");
$("#txtValiCode").focus(function(){
$("#divCodeImage").fadeIn("slow");
});
$("#hrefChangeImage").click(function(){
$("#imgCode").attr("src","../GenerateCode.ashx?num="+Math.random()*100+"")
});
$("input[name$='txtUserName']").formValidator({onshow:"请输入用户名",onfocus:"4-20个字符(包括小写字母、数字、下划线、中文)",oncorrect:"该用户名可以注册"}).InputValidator({min:1,max:20,onerror:"用户名不能为空"}).RegexValidator({regexp:"username",datatype:"enum",onerror:"用户名格式不正确"})
.AjaxValidator({
type : "get",
url : "Register.aspx",
datatype : "text",
success : function(data){
if( data == "false" )
{
return true;
}
else
{
return false;
}
},
buttons: $("input[name$='btnRegister']"),
error: function(){alert("服务器没有返回数据,可能服务器忙,请重试");},
onerror : "该用户名不可用,请更换用户名",
onwait : "正在对用户名进行合法性校验,请稍候..."
});
$("input[name$='txtUserPassword1']").formValidator({onshow:"请输入密码。",onfocus:"密码可以由大小写英文字母、数字和符号组成,长度6-20位。",oncorrect:"OK"}).InputValidator({min:1,onerror:"请输入密码。"}).RegexValidator({regexp:"password",datatype:"enum",onerror:"密码格式不正确。"});
$("input[name$='txtUserPassword2']").formValidator({onshow:"请再输入一遍您上面输入的密码。",onfocus:"两次输入密码必须一致。",oncorrect:"OK"}).InputValidator({min:1,onerror:"请再次输入您的密码。"}).CompareValidator({desID:"ctl00_cphBody_txtUserPassword1",datatype:"string",operateor:"=",onerror:"密码不一致。"});
$("input[name$='txtEmail']").formValidator({onshow:"请输入Email。",onfocus:"请准确填写您的常用有效邮箱。",oncorrect:"OK"}).InputValidator({min:1,onerror:"请输入您的Email。"}).RegexValidator({regexp:"email",datatype:"enum",onerror:"Email格式不正确。"});
$("#txtValiCode").formValidator({onshow:"请输入右侧图片文字。",onfocus:"验证码必须正确。",oncorrect:"OK"}).InputValidator({min:1,onerror:"验证码不能为空,请确认。"})
.AjaxValidator({
type : "get",
url : "Register.aspx",
datatype : "text",
success : function(data){
if( data == "true" )
{
$("#divCodeImage").fadeOut("slow");
return true;
}
else
{
return false;
}
},
buttons: $("input[name$='btnRegister']"),
error: function(){alert("服务器没有返回数据,可能服务器忙,请重试");},
onerror : "验证码错误。",
onwait : "正在验证,请稍候..."
});

  回复  引用    
#685楼 2009-01-15 18:56 | 小Z[未注册用户]
我使用的是ASP.NET

如果單存用HTML顯示的時候是正常

可是使用ASP.NET時只有oncorrect是正常的

像onshow onerror等等顯示的位置都會跑掉

請問怎麼會這樣呢

  回复  引用    
#686楼 2009-01-16 09:12 | uxspy      
猫冬,昨天加你你没通过,我的表单如【心随我动】的一样,验证通过与否都会提交,为此我很苦恼,如果你看到留言请email回复我,感谢
  回复  引用  查看    
#687楼 2009-01-19 22:15 | junp![未注册用户]
使用inputValidator({ min: 1, onerror: "你是不是忘记选择学历了!" })验证select,当给select加上onchange事件时,onchange事件触发了两次。
  回复  引用    
#688楼 2009-01-20 21:34 | formvalidator[未注册用户]
我也做了个表单验证插件,我们可以互相看看。。
http://www.cnblogs.com/Dabai/

  回复  引用    
#689楼[楼主] 2009-01-24 15:16 | 猫冬      
@bumtime
http://www.yhuan.com/formvalidator/faq.html#15" target="_new">http://www.yhuan.com/formvalidator/faq.html#15
请认真查看压缩包里的faq.html
15. 在使用ajaxValidator的时候,服务器端无法获得控件的值,每次都是空,怎么回事?[top]

请看更新记录
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里用户名的写法



  回复  引用  查看    
#690楼[楼主] 2009-01-24 15:18 | 猫冬      
@无剑
你好,你的问题跟我前面回答的问题是一样的

  回复  引用  查看    
#691楼[楼主] 2009-01-24 15:19 | 猫冬      
@xyh
你好这个问题在ver3.3里已经解决了。请重新下载

  回复  引用  查看    
#692楼[楼主] 2009-01-24 15:22 | 猫冬      
@小Z
你使用的是不是自动产生提示层的?
是不是套在框架里?

  回复  引用  查看    
#693楼[楼主] 2009-01-24 15:24 | 猫冬      
@junp!
你好插件本省已经为select加上onchanged事件

  回复  引用  查看    
#694楼 2009-01-28 22:01 | cntlis      
现有的代码不支持JQUERY 1.3.1啊,楼主看下
  回复  引用  查看    
#695楼 2009-01-28 22:09 | cntlis      
最终测试了下,发现只要是针对单选进行判断,使用JQUERY1.3或者1.3.1都报错,楼主查看下
  回复  引用  查看    
#696楼 2009-01-29 22:38 | wuyou8888[未注册用户]
gb2312编码,为什么不能使用呢.
  回复  引用    
#697楼 2009-01-30 23:49 | 笨雷雷      
formValidator3.3在jquery1.3.1下有一个bug,第399行
//if(initConfig.submitonce){$("input[@type='submit']").attr("disabled",true);}
替换为:
if(initConfig.submitonce){$(":submit").attr("disabled",true);}
就好了

好像jqeury不再支持@type写法了

  回复  引用  查看    
#698楼 2009-02-03 09:34 | CMSPHP      
js部分:
$("#nickname")
.formValidator({onshow:"请输入用户昵称",onfocus:"昵称至少2个字符,最多10个字符",oncorrect:"该昵称长度验证正确"})
.inputValidator({min:2,max:100,onerror:"你输入的用户昵称非法,请确认"})
.ajaxValidator({
type : "get",
url : "?mod=util&fun=ajax_edit_personal&personal_id=<?=$personal_id;?>&nickname=" + $("#nickname").val(),
datatype : "html",
success : function(data){
if( data == "1" )
{
alert('重复');
return false;
}
else( data == "0" )
{
alert('不重复');
return true;
}
},
buttons: $("#sub_ok"),
error: function(){alert("服务器没有返回数据,可能服务器忙,请重试");},
onerror : "该用户名不可用,请更换用户名",
onwait : "正在对用户名进行合法性校验,请稍候..."

});



ajax_edit_personal.php文件
<?php
require_once 'config.inc.php';
require_once 'core/bo/personal_bo.class.php';
$personalBo=new PersonalBo();
$personal_id=$_REQUEST['personal_id'];

$nickname=$_REQUEST['nickname'];
$condition=" where nickname='".$nickname."'";
$arr = $personalBo->specList($condition,1,0);
if($arr[0][id]){
if($personal_id==$arr[0][id]){
echo "0";

}else{
echo "1";
}
}else{
echo "0";
}
?>


问题是:
修改个人信息的昵称,第一次不修改直接提交,本来应该显示对的,多少显示昵称重复,修改一下昵称,在输入原来的昵称,验证通过!

这个问题好像
http://www.yhuan.com/formvalidator/demo1.htm" target="_new">http://www.yhuan.com/formvalidator/demo1.htm
这里也存在,不修改用户名 直接鼠标移动下,显示该用户名不可用,请更换用户名
或者直接点提交也显示该用户名不可用,请更换用户名
请给解答
我的qq16452920
我的msn:yangyupeng2751@hotmail.com



推荐几个比较好的技术QQ群
CMSPHP-模板技术讨论 QQ群号码15298918
CMSPHP-APMServ讨论 QQ群号码1878862
CMSPHP-JAVA技术讨论 QQ群号码50037090
CMSPHP-jquery讨论 QQ群号码76582746
【城堡】 QQ群号码9334779


希望大家学习更上一层楼! 开心每天!

  回复  引用  查看    
#699楼 2009-02-03 21:30 | flyfan[未注册用户]
我的问题和楼上CMSPHP说的一样,如果是修改页面ajaxValidator还是有bug。不修改不能提交,修改后再修改回原来的却可以提交了。包括
http://www.yhuan.com/formvalidator/demo1.htm这个页面的也一样,希望快点解决

  回复  引用    
#700楼 2009-02-04 16:58 | loach[未注册用户]
请猫冬尽快用jQuery 1.3.1 版本类库测试一下。有问题...急急
就是在一开始的界面是。什么都不输入:直接点击 提交 按钮 各个字段后面的提示信息 都没有变化

测试地址:http://dev.wemo.cn:8089/139GO/tx/formValidator3.3/demo1.htm

  回复  引用    
#701楼 2009-02-12 16:28 | heheweb[未注册用户]
插件在最新的jquery1.3.1中有一个问题,就是使用多选验证会出现错误,下面提示“例外被抛出且未接住”
  回复  引用    
#702楼 2009-02-16 00:20 | soky[未注册用户]
怎么验证输入价格,2.00这种
  回复  引用    
#703楼 2009-02-20 01:24 | 贺颖[未注册用户]
大牛,问你个问题。你其中 ajaxValidator这个方法有问题,不知道是什么错误,我是学写java的,他根本没有进到我定义的action里去判断,也就是活他的回调的data属性是空,所以没办法返回true好像包括你写的例子也是这样的,就算等于maodong一样的还是报错。
  回复  引用    
#704楼 2009-02-21 17:18 | loach[未注册用户]
你好朋友。上两周都忘记提醒你了。不知道 你的formValidator3.3 ,有没有已经再jquery1.3.1 上测试了
  回复  引用    
#705楼 2009-02-27 17:28 | 阿印[未注册用户]
不错,收藏了,呵呵
  回复  引用    
#706楼 2009-03-05 10:16 | 不见不散      
ajaxValidator目前好像只支持发送一个参数,想发送多个参数要怎么设置呢? 谢谢楼主提供这么棒的验证框架. 看了楼主提供的文档,明白了,跟jQuery.ajax一样...
  回复  引用  查看    
#707楼 2009-03-18 09:34 | hzfulin[未注册用户]
在ajaxValidator验证时默认将本控件加到URL后传到后端
如果想传多几个其它控件的值过去一起验证
怎么设

  回复  引用    
#708楼 2009-03-22 20:56 | lefis[未注册用户]
我用ajaxValidator做表单验证用户名的时候,不论正确与否 总是提示 “服务器没有返回数据,请重试” ,是不是根本就没有数据返回呢?

代码一浏览器端:
.ajaxValidator({
type : "get",
url : "regedit.php?job=check",
datatype : "json",
success : function(data){
if( data == "1" )
{
return true;
}
else
{
return false;
}
},
buttons: $("#button"),
error: function(){alert("服务器没有返回数据,请重试");},
onerror : "该用户名不可用,请更换用户名",
onwait : "校验中,请稍候..."
});

代码二服务器端:
if($_GET['job']=='check'){
$sql = "select user_id from cms_user where user_name='$user_name'";
$num = $db->myquery_num($sql);
if($num>0){
echo("0");
exit(0);
}else{
echo("1");
exit(0);
}

以上是主要代码,各位达人帮忙看看哪里有错

  回复  引用    
#709楼 2009-03-24 15:13 | guyanpiaoxue[未注册用户]
同样遇到在ajaxValidator验证时传多几个其它控件的值过去一起验证,无法获取值的问题,希望楼主给予帮助,谢谢!!
  回复  引用    
#710楼 2009-03-25 13:37 | Nickol[未注册用户]
问一下,判断字数,能不能不区分中英文啊
  回复  引用    
#711楼 2009-03-25 14:06 | manion[未注册用户]
请教一下!能不能实现点提交按钮时把整个表单的元素一起提交验证,根据唯一标示来做不同的验证 不用在页面为每个元素单独定义
  回复  引用    
#712楼 2009-03-25 14:48 | Nickol[未注册用户]
看到个问题,如果设置onshow为null或"",则tip被隐藏了,那么当验证时候,其他提示就看不见了
  回复  引用    
#713楼 2009-03-25 19:10 | zhyh[未注册用户]
我的问题与楼上一样,新版本 如果把 onshow 或 onfocus 设成 "" 或 null的话,刚才的错误验证就看不到了,我记得前几个版本是可以的!!!
  回复  引用    
#714楼[楼主] 2009-03-25 21:43 | 猫冬      
@guyanpiaoxue
ajaxValidator传递多个值的问题,我会尽量在新的版本里解决

  回复  引用  查看    
#715楼[楼主] 2009-03-25 21:44 | 猫冬      
--引用--------------------------------------------------
Nickol: 问一下,判断字数,能不能不区分中英文啊
--------------------------------------------------------
你好,判断数字的判断是通过正则表达式来实现的,你可以方便的扩展formvalidator_reg.js里的内容

  回复  引用  查看    
#716楼[楼主] 2009-03-25 21:47 | 猫冬      
--引用--------------------------------------------------
manion: 请教一下!能不能实现点提交按钮时把整个表单的元素一起提交验证,根据唯一标示来做不同的验证 不用在页面为每个元素单独定义
--------------------------------------------------------
这个插件是要实现js和html分离,我不知道你的说的是哪个意思?

  回复  引用  查看    
#717楼[楼主] 2009-03-25 22:27 | 猫冬      
--引用--------------------------------------------------
Nickol: 看到个问题,如果设置onshow为null或&quot;&quot;,则tip被隐藏了,那么当验证时候,其他提示就看不见了
--------------------------------------------------------
确实存在你说的情况,马上查一下,给你带来不便表示抱歉

  回复  引用  查看    
#718楼 2009-03-25 23:46 | zhyh[未注册用户]
期待猫大哥百忙之中将这个BUG修复一下,我最近的一个项目中就在使用这个插件
  回复  引用    
#719楼 2009-04-01 11:34 | 博览群书      
BUG报告

文件:formValidator.js
函数:ajaxValid()

complete : function(){
if(setting.buttons && setting.buttons.length > 0){
setting.buttons.attr({"disabled":false})};
setting.complete; //应改为setting.complete();
},

  回复  引用  查看    
#720楼 2009-04-01 16:59 | chyoqin[未注册用户]
<script type="text/javascript">
$(document).ready(function(){
$.formValidator.initConfig({onSuccess:sub(),onError:function(){alert("Check did not pass, the specific mistakes see error messages!"); }});
$("#b_name").formValidator({onshow:"Please enter name",onfocus:"Name at least 2, up to 30 char",oncorrect:"Congratulations, you lose the right"}).InputValidator({min:2,max:30,onerror:"Name length illegal, make sure"});


我想在输入用户名时验证一下这个用户名在user表时是否已存在,在$("#b_name")。。。时怎么调用一个checkuser()函数呢??

  回复  引用    
#721楼 2009-04-02 15:16 | 技术小菜鸟      
你好,我用你的JQuery验证插件验证Asp.net服务器端控件时如果用服务器端Button提交会发生错误

  回复  引用  查看    
#722楼 2009-04-03 14:26 | 启程      
ajaxvalidator,这个的问题确实不好搞,猫冬能不能做一个Demo是能够传递参数的,比如把一个固定值"option=reg",一个文本框值$("#txtLoginName").val() 给传递到服务器去验证的,类似这样的例子。感谢给我们提供了这么好个插件!
  回复  引用  查看    
#723楼 2009-04-03 14:35 | 启程      
客户端验证都可以通过失去焦点时验证,但有时候希望能够在onSuccess:function(){
这个事件里面再验证一下,但在这里验证,不知道如何写,如何提示错误?

  回复  引用  查看    
#724楼 2009-04-03 14:37 | 启程      
客户端验证都可以通过失去焦点时验证,但有时候希望能够在onSuccess:function(){
这个事件里面再验证一下,但在这里验证,不知道如何写,如何提示错误?
其实我是想,对于Ajax验证,有时候需要处理比较多东西,不需要每次失去焦点都验证一次,到最后,客户端验证完了,再一次性验证,那样效率会好点。

  回复  引用  查看    
#725楼 2009-04-09 15:56 | hanswang[未注册用户]
你好,这个验证插件挺好用的,谢谢
我使用过程中遇到两个问题
1.和jQuery的最新版本1.3.2一起使用校验多个复选框时报错,我把demo里的jQuery_last.js直接换成1.3.2就弹出错误了,但是项目里有其他jQuery应用,不好全部使用验证插件使用的版本
2.onshow等设置null时不提示的问题,我想只有在不符合要求时才出现警告,但是没找到实现的方法,楼上有人提了这个问题,请问作者解决了吗?

  回复  引用    
#726楼 2009-04-09 16:01 | hanswang[未注册用户]
你好,这个验证插件挺好用的,谢谢
我使用过程中遇到两个问题
1.和jQuery的最新版本1.3.2一起使用校验多个复选框时报错,我把demo里的jQuery_last.js直接换成1.3.2就弹出错误了,但是项目里有其他jQuery应用,不好全部使用验证插件使用的版本
2.onshow等设置null时不提示的问题,我想只有在不符合要求时才出现警告,但是没找到实现的方法,楼上有人提了这个问题,请问作者解决了吗?我觉得可以设置一个全局属性,类似风格的,如果设置成只有出错才提醒则formValidator()无参数初始化时就默认不出现提示了

  回复  引用    
#727楼 2009-04-16 15:04 | guest[未注册用户]
怎样清除$.formValidator.initConfig的初始化。
  回复  引用    
#728楼 2009-04-19 23:58 | xmc[未注册用户]
$("#tel").formValidator({telTip:"teltip",empty:true,onshow:"请输入你的联系电话,可以为空!",onfocus:"格式例如:0754-88888888",oncorrect:"谢谢你的合作"}).regexValidator({regexp:"^(0?[1-9]\d{1,2}-?)?(0[1-9]\d{1,2}-?)?[1-9]\d{6,7}$",onerror:"你输入的联系电话格式不正确"});

总是显示:你输入的联系电话格式不正确
其中正则没有错
问题会在哪

  回复  引用    
#729楼 2009-04-23 09:02 | 不好用[未注册用户]
我怎么用的。指定了form1 的 action=aa.asp。不管验证通过没通过。点安按钮都提交到aa.asp


  回复  引用    
#730楼 2009-04-25 11:23 | 龙十二[未注册用户]
请教几个初级的问题,希望大大能够帮忙解答下。
var jQuery_formValidator_initConfig;
(function($) {
})(jQuery);
这种写法是什么意思?
还有代码里面有句$.extend(true,setting, cs)是什么意思,我看jquery里面的extend好像参数是一个吧

  回复  引用    
#731楼 2009-04-26 19:23 | adfadf[未注册用户]
$.extend(true,setting,cs)跟$.extend({},setting,cs)有什么区别吗
  回复  引用    
#732楼 2009-05-06 10:33 | qq:15932551[未注册用户]
a.htm
里面有个frame src=b.htm(一些表单元素)
尾部是一排按钮,单击按钮时如何实现校验?
<input type='button' value='save' onclick="test()">
<script>
function test(){
这里得到校验是否通过,如果未通过则提示错误信息
通过则执行下面代码
}
</script>

  回复  引用    
#733楼 2009-05-06 14:22 | 且行且思      


已经测试过,效果不错
谢谢楼主开源。。。


有一个紧急的小细节请教。
表单内有二服务器按钮,
提交和返回

用户点击提交时,这些验证才起作用。
点击返回则不需做验证,

该如何配置呢,
在线等待中。。

  回复  引用  查看    
#734楼 2009-05-06 15:29 | 且行且思      


郁闷。。。
password2改后
用户若再改一下password1 ,仍提示验证合法/

这二个密码框可否做一个往返联动检测??

  回复  引用  查看    
#735楼 2009-05-10 11:27 | 大喇嘛[未注册用户]
当使用ajaxform插件异步提交表达的时候,按sumit无法阻止表单的提交,也就是不通过任何验证表单任然会提交
  回复  引用    
#736楼 2009-05-10 23:51 | stone111111111111111111111[未注册用户]
js代码写的很烂
  回复  引用    
#737楼 2009-05-13 00:59 | Stone111111[未注册用户]
花了点时间,重写了博主的验证控件,有兴趣的可以下载看看
http://cid-b4a215024df321e2.spaces.live.com/default.aspx?wa=wsignin1.0&sa=849015682

  回复  引用    
#738楼 2009-05-13 13:55 | adfadf[未注册用户]
错误: jQuery is not defined
源文件:file:///D:/%E5%B7%A5%E4%BD%9C/work/formValidator.js
行:988

  回复  引用    
#739楼 2009-05-14 18:44 | mark35[未注册用户]
@lefis

你把下面这一行删除就行了。
datatype : "json",

这个参数设定了返回值为JSON格式,但你服务端输出(返回)的却不是JSON格式。

  回复  引用    
#740楼 2009-05-14 19:04 | mark35[未注册用户]
--引用--------------------------------------------------
启程: 客户端验证都可以通过失去焦点时验证,但有时候希望能够在onSuccess:function(){
这个事件里面再验证一下,但在这里验证,不知道如何写,如何提示错误?
--------------------------------------------------------
如果是<form>表单直接用 type='submit' 按钮提交,那么可以在<form 标签中添加 onsubmit=”$.formValidator.pageIsValid('1')“ 来实现; 如果是在JS函数中模拟提交则可以这样:
function submit_formxxx() {
//先校检
if(!$.formValidator.pageIsValid('1')) {
return false;
}

//继续其他工作
......
}

  回复  引用    
#741楼 2009-05-14 19:05 | mark35[未注册用户]
@chyoqin #615
这个需求得用ajaxValidator函数来实现

  回复  引用    
#742楼 2009-05-14 19:06 | 且行且思      

如何同时提交二个控件的值至服务器端页呢?

  回复  引用  查看    
#743楼 2009-05-14 20:50 | mark35[未注册用户]
--引用--------------------------------------------------
启程: ajaxvalidator,这个的问题确实不好搞,猫冬能不能做一个Demo是能够传递参数的,比如把一个固定值&quot;option=reg&quot;,一个文本框值$(&quot;#txtLoginName&quot;).val() 给传递到服务器去验证的,类似这样的例子。感谢给我们提供了这么好个插件!
--------------------------------------------------------
这样看是否行:
ajaxValidator({
type :"post",
beforesend: function() {
var v = $('#u_name').val();
var str = 'key='+v;
this.data = str;
//alert(this.data = str);
},
......

  回复  引用    
#744楼 2009-05-14 20:59 | mark35[未注册用户]
如果 beforesend方式可行,那么就可以用jquery的serialize()方法来传递整个表单(不过这样一来密码也是明文传输了,不安全。当然可以在序列化之前另作处理)。
  回复  引用    
#745楼 2009-05-14 21:12 | 且行且思      
beforesend: function() {
var v = $('#u_name').val();
var str = 'key='+v;
this.data = str;
//alert(this.data = str);
},

++++++++++++++++++++++++++++
这样服务器端可以捕获到,如何把它做为一个变量加到data或url后面呢??

  回复  引用  查看    
#746楼 2009-05-15 10:43 | mark35[未注册用户]
@且行且思
#640

还是不行,这样可以改变 data的值,但是并非在本次ajax提交中生效而是会在下次提交生效。

  回复  引用    
#747楼 2009-05-15 16:00 | mark35[未注册用户]
@且行且思
找到解决办法,修改源程序

1、在#418行开始添加如下代码:
//add by waiting
var pData = setting.pre_proc();
/*判断规则:若data和附加pre_proc()返回值都为字符串则直接连接
否则都转化为obj进行合并.
要确保ajaxValidator.settings.processdata == true!!*/
if ('string' == typeof(setting.data) && 'string' == typeof(pData)) {
if (0 == pData.indexOf('&')) { //前导为&
setting.data += pData;
} else {
setting.data += '&' + pData;
}
} else {
if ('object' != typeof(setting.data)) {
setting.data = setting.proc_pdata(setting.data);
}
if ('object' != typeof(pData)) {
pData = setting.proc_pdata(pData);
}
if (false != pData) {
$.extend(setting.data, pData);
}
//alert(setting.data.toSource());
}
pData = null; //end of add

--------------------
2、在#902行插入如下代码:
//add by waiting
pre_proc: function(){},
proc_pdata : function(data) {

if ('string' == typeof (data)) {
var arr = data.split('&');
var str = ''; //must ''
for (var x in arr) {
var arr_tmp = arr[x].split('=',2);
var k = arr_tmp[0] ,value = arr_tmp[1];
str += ',"'+ k + '":"' + value + '"';
}
if (0 == str.length) {
return false;
}
str = '{' + str.slice(1) + '}';
var res = eval( '(' + str + ')' );
return res;
}

},

----------------

3、修改 #898 行 processdata : false, 值为true.

  回复  引用    
#748楼 2009-05-15 16:31 | mark35[未注册用户]
上面是修改 formValidator.js 源程序。

使用时这样写代码:

.ajaxValidator({
type :"post",
url :"admin.php?ajax=3",
pre_proc: function () {
var v = $('#form1').serialize();
//var v = 'key1=v1&key2=v2&key3=v3';
//var v = {'a1':11,'a2':22}
return v;

},
//data: {option:'reg',aa:'9', 'bb':11},
data : 'optin=reg&a1=12',
.....
}

添加了一个自定义函数 pre_proc(),用户需要附加提交的数据用 return 返回。返回的类型可以是标准提交字符串( 'key1=v1&key2=v2' 的格式,或者直接用 $.serialize()方法序列化表单),也可以是json字符串格式。
data参数也可以是字符串和json对象方式。
测试成功。

  回复  引用    
#749楼 2009-05-15 16:35 | mark35[未注册用户]
注意,要附加提交的数据在pre_proc()中必须用 return来返回,否则是无效的。
如果有人要mod文件,吱一声~

  回复  引用    
#750楼 2009-05-15 17:21 | mark35[未注册用户]
--引用--------------------------------------------------
大喇嘛: 当使用ajaxform插件异步提交表达的时候,按sumit无法阻止表单的提交,也就是不通过任何验证表单任然会提交
--------------------------------------------------------
<form onsubmit="return $.formValidator.pageIsValid('1')">

  回复  引用    
#751楼 2009-05-15 23:21 | 且行且思      


好,谢谢mark35大哥,
测试一下。

  回复  引用  查看    
#752楼 2009-05-15 23:56 | 且行且思      
@mark35


31350709@qq.com

mark35大哥,测试未成功,能否把你的js及domo文件发到我邮箱下?
谢谢。

  回复  引用  查看    
#753楼 2009-05-16 00:03 | 且行且思      
.ajaxValidator({
type : "post",
url : "Default.aspx?clientid=password1",
pre_proc: function () {
var v = $('#form1').serialize();
return v;
},
data : "optin=reg&a1=12&sdf='"+$("#password1").val() +"'",
datatype : "json",
success : function(data){
if( data == "1" )
{
return true;
}
else
{
return false;
}
},
buttons: $("#button"),
error: function(){alert("服务器没有返回数据,可能服务器忙,请重试");},
onerror : "该用户名不可用,请更换用户名",
onwait : "正在对用户名进行合法性校验,请稍候..."
});



错在哪里??

  回复  引用  查看    
#754楼 2009-05-16 03:06 | mark35[未注册用户]
1、 "data"参数还是不能有运算表达式的!只能是字符串+变量或者 json格式。比如:
data: 'option=reg&id=' + uid; //注意这儿的 uid变量需要是全局变量并且是已经赋值的,不能是on-line运算出的。

2、datatype : "json", <----你这儿制定了服务器返回信息格式是JSON,而下面 “if( data == "1" ) ” 明显的data数据格式不是JSON而是txt或者html格式。
你要么删除datatype 参数,要么调整服务端返回信息的格式。

  回复  引用    
#755楼 2009-05-16 03:09 | mark35[未注册用户]
注意 datatype : 这个参数指的是“服务器返回到客户端信息的类型”,而不是ajax发送(到服务器) 信息的类型! 并且也和 data参数没关系。
  回复  引用    
#756楼 2009-05-16 03:12 | mark35[未注册用户]
@且行且思 #647楼
--------------------
抱歉代码都在公司,需要的话周一发给你。我看你用的是ASP,我这儿服务端是PHP估计你用不上(其实用firefox+firebug,然后在服务端直接 print_r($_REQUEST); 就很清楚了)

  回复  引用    
#757楼 2009-05-16 03:21 | mark35[未注册用户]
再补充一下吧,可使用格式如下
var uid=333; //global

xxxx.ajaxValidator({
type :"post",
url :"admin.php?ajax=3",
pre_proc: function () {
var v = $('#form1').serialize();
//var v = 'key1=v1&key2=' + $('#someid').val();
//var v = 'key1=v1&key2=v2&key3=v3';
//var v = {'a1':11, 'a2':22, 'a3':'some words'}
return v;

},

data : 'optin=reg&a1=12',
//data: 'option=reg&a1=12&id=' + uid;
//data: {option:'reg' ,aa:'9', 'bb':11, 'cc':'some thing'},
.....
}


注释掉的都是可用表达式,没列出的都是不支持的。比如
data : 'option=reg&u_name=' + $('#u_name').val(); <----不行的!!!

  回复  引用    
#758楼 2009-05-16 13:20 | 且行且思      
@mark35


谢谢,不错的思路,
我用的asp.net

还有一个问题,
//var v = 'key1=v1&key2=' + $('#someid').val();

若不断地返回,那么该表达式的值叠加了,如下:
clientid=account&account=33333&optin=reg&key2=11&key2=22&ALL_HTTP=HTTP_CACHE_CONTROL

表达式key2=的名称及值,所输出的记录,如何每次返回后自动清除??

  回复  引用  查看    
#759楼 2009-05-18 14:00 | mark35[未注册用户]
@且行且思
赋值的确是重复叠加的,不过我在添加的那部分已经做了合并处理,最后在提交(get/post)的时候只会输出(最后一次)正确的值对的。

这个代码是应急用,还有问题(比如get方式,没有任何附加提交,url最后会附上一个不成对的undedifined)。
有空再看看能否改进一下。当然如果博主能出来就更好了~

  回复  引用    
#760楼 2009-05-18 14:56 | mark35[未注册用户]

@且行且思
找到解决办法了:合并data/pre_proc()两个值时不修改data而是修改后者,最后传递给$.ajax的不用 setting.data而是pData。 收信~

  回复  引用    
#761楼 2009-05-18 15:09 | mark35[未注册用户]
详细修改 formValidator.js:
1、19行开始插入

//add by waiting 处理data/pre_proc()返回值为jsong格式
proc_pdata : function(data) {
if ('string' == typeof (data)) {
var arr = data.split('&');
var str = ''; //must ''
for (var x in arr) {
var arr_tmp = arr[x].split('=',2);
str += ',"'+ arr_tmp[0] + '":"' + arr_tmp[1] + '"';
}
str = '{' + str.slice(1) + '}';
var res = eval( '(' + str + ')' );
return res;
}
},

-----------------------------------------------------------
2、418行开始插入


//add by waiting
var pData = setting.pre_proc();
/*判断规则:若data和附加pre_proc()返回值都为字符串则直接连接
否则都转化为obj进行合并.
要确保ajaxValidator.settings.processdata == true!!*/
if (setting.data && pData) { //两种方式皆有
if ('string' == typeof(setting.data) && 'string' == typeof(pData)) {
if (0 == pData.indexOf('&')) { //前导为&
pData = setting.data + pData;
} else {
pData = setting.data + '&' + pData;
}
} else {
if ('object' != typeof(setting.data)) {
setting.data = $.formValidator.proc_pdata(setting.data);
}
if ('object' != typeof(pData)) {
pData = $.formValidator.proc_pdata(pData);
}
if (false != pData) {
var empty = {};
pData = $.extend(empty, setting.data, pData);
}
//alert(setting.data.toSource());
}

} else if (setting.data) { //只有data参数
pData = setting.data;
}//end of add

---------------------------------
3、437行覆盖成
data : pData, //modify by waiting

------------------------------------
4、902行后插入
pre_proc: function(){},//add by waiting


调用方式见#652楼

  回复  引用    
#762楼 2009-05-18 18:04 | 且行且思      
@mark35

非常感谢。基本上解决问题了。
历害。

  回复  引用  查看    
#763楼 2009-05-18 18:40 | mark35[未注册用户]
补充一点:
如果data和pre_proc()中有相同的值名,则提交时后者的值会覆盖前者的。

例:
data : 'option=reg&client=33',
pre_proc : function() {
var v = {'key1': 11, 'client':35};
//var v = 'key1=11&client=35';
return v;
}
提交的值对将会是 {'option':reg, 'key1':11, 'client':35} 或者 'option=reg&key1=11&client=35' .

  回复  引用    
#764楼 2009-05-19 10:19 | mark35[未注册用户]
--引用--------------------------------------------------
且行且思:

郁闷。。。
password2改后
用户若再改一下password1 ,仍提示验证合法/

这二个密码框可否做一个往返联动检测??

--------------------------------------------------------
你JS里面只给 password2挂了compareValidator函数,而passwords1没挂吧。两个都挂上就可以实现往返联动(只不过这样当你先填入pass1离开后会马上显示“两次密码必须一致”而不是“密码格式合法”)

  回复  引用    
#765楼 2009-05-21 16:38 | 咸鱼翻身      
感谢
好好用是对你最好的感谢。

  回复  引用  查看    
#766楼 2009-05-26 17:25 | 好孩子[未注册用户]


郁闷
若页面载入时,当前文本值不变的情况下,点击按钮,
post不到验证页,怎么办呀??

  回复  引用    
#767楼 2009-05-29 11:59 | wenzhu
时间的验证好像有点问题, 当时间没有通过的时候,提交时,提交按钮的值就变成了时间,时间插件就自动跑出来了
  回复  引用    
#768楼 2009-05-29 15:57 | hsxiaoma211[未注册用户]
你好!
使用你的表单验证工具和jquery.form联合使用的时候出现问题,不管验证有没有通过,表单都会提交.

我使用了两种方法,1是按说明写的,2是将验证代码放在一个function checkForm()里,然后使用ajaxSumbit({beforeSubmit:checkForm})

以上都不起作用,不知何故?

  回复  引用    
#769楼 2009-05-29 20:03 | mark35[未注册用户]
@hsxiaoma211
你可以在function checkForm()中ajaxSumbit({beforeSubmit:checkForm}) 之前加上这样一条:

if (!$.formValidator.pageIsValid('1')) {return false;}

  回复  引用    
#770楼 2009-05-30 17:06 | mark35[未注册用户]
@hsxiaoma211
看了源码,发现插件会自动给表单绑定onsubmit事件(return $.formValidator.pageIsValid("1") ),如果照#664楼写法,则会产生两次验证过程。 你可以试试把你表单的提交按钮type从submit改成button。 不过当ajax验证期间就无法自动disabled掉提交按钮了。

或者你不使用jquery.form插件,直接用页面自己的提交或者自己写ajax提交代码。对于后者其实很简单,只需要用jquery的serialize()方法把表单序列化然后作为参数使用jquery的 $.post()方法提交即可。

建议猫冬把内部绑定sumbit方法作为一个init参数来绑定,这样用户在初始化表单时就可以选择是否使用自动绑定onsubmit功能以便自己使用其他方式提交。不然假如我使用自定义ajax去提交,则需要额外使用(if (!return $.formValidator.pageIsValid("1")) return false;)命令来单独判断验证结果,但这样产生的结果是当submit按钮提交时系统会做两次验证,无法通过验证输入框的alert提示会重复弹出两次。 如果把onsumit绑定作为一个初始化参数,那么我就可以使用类似
$.formValidator.initConfig({
fomrid: 'fomr1',
submit: ''
//submit : function() {do ....}
});
这样方式来不给表单绑定onsubmit方法or绑定自定义方法。

  回复  引用    
#771楼 2009-05-30 17:15 | mark35[未注册用户]
------------------------>>>>>>>
你可以在function checkForm()中ajaxSumbit({beforeSubmit:checkForm}) 之前加上这样一条:

if (!$.formValidator.pageIsValid('1')) {return false;}
----------------------------<<<<<<<<<

#664楼表述不正确,更正:
你可以在function checkForm()中加上这样一条:
if (!$.formValidator.pageIsValid('1')) {
return false;
} else {
return null;
}

  回复  引用    
#772楼 2009-05-30 18:53 | mark35[未注册用户]
或者简单的给$.formValidator.initConfig加个开关:

$.formValidator.initConfig({
...
bindsubmit: true //defalt
//bindsubmit: false

})
默认true自动绑定onsubmit事件,用户可以关闭。
这样就可以解决两次验证的情况:
1、自己给表单绑定onsubmit方法,比如 onsubmit='my_submit()'
2、在my_submit()中添加这样的代码
if (! $.formValidator.pageIsValid("1") ) {
return false;
} else {
this.submit();
//或者其他提交方法,比如
/*
var pdata = $('#formid').serialize();
$.post('server.php', pdata, function(r) {
if (r == 1) {alert('提交成功');}
});
*/
}

  回复  引用    
#773楼 2009-06-01 15:12 | laurel[未注册用户]
我有问题请教!
第一: 如果我要判断一个表单,如果为空刚不用判断是否有效.如果非空,判断其是否符合格式.

第二:手机号码的正则不对了.
号段不够全.

  回复  引用    
#774楼 2009-06-01 17:05 | 杨鑫奇      
不错谢谢分享。。下下来测试下
  回复  引用  查看    
#775楼 2009-06-02 11:20 | test56[未注册用户]
有个问题,修改用户信息时,修改后,直接提交 会报修改后的信息已存在 ?再线等待
  回复  引用    
#776楼 2009-06-03 10:40 | mark35[未注册用户]
@test56
这是因为直接提交时(插件)并不作ajax验证。你可以先让(需要作ajax验证的)用户信息输入框获得焦点,然后鼠标点击其他地方(不能是提交按钮)让其失焦(blur)验证。然后再提交。

之所以是这样的设计,应该是暂时无法解决异步失焦验证与post提交事件判断与处理(还没等异步验证返回信息就已经提交出表单)。这个我觉得可以使用JS事件机制来解决。

  回复  引用    
#777楼 2009-06-04 14:30 | jquery~[未注册用户]
你好:

.ajaxValidator({
type:"get",
url:"/user/user_ajaxCheckUsernameIsExist.action",
data:"user.username="+$("#username").val();
});

这里用data:想多传几个参数也传不过去,得到的user.username总是空字符串,希望在新版本中尽快解决,项目中用到了,这点不解决,还是很大瑕疵。



  回复  引用    
#778楼 2009-06-04 16:59 | dododragon[未注册用户]
@mark35

回复666楼

按照您这样的写法,还是不行。能不能帮我看看我的代码

function transfer_order()
{
var options =
{
target: "#order_group",
url: "/template/order.aspx",
type: "POST",
beforeSubmit: check_order()
};
if (!jQuery.formValidator.pageIsValid("1")) {return false;}
jQuery("#order").ajaxForm(options);
jQuery("#order_info").text("信息核对");
}

function check_order()
{

jQuery.formValidator.initConfig
({
formid:"order",
onerror:function(msg){alert(msg);return false;}
})

jQuery("#user_name").formValidator({onshow:"请输入您的姓名",onfocus:"姓名至少2个字,最多5个字",oncorrect:"填写正确"}).inputValidator({min:4,max:10,onerror:"你填写不正确"}).regexValidator({regexp:"name",datatype:"enum",onerror:"姓名格式不正确"})
jQuery("#user_mobile").formValidator({onshow:"请输入您的手机号码",onfocus:"请正确填写手机号码",oncorrect:"填写正确"}).inputValidator({min:11,max:11,onerror:"号码必须是11位的"}).regexValidator({regexp:"mobile",datatype:"enum",onerror:"您输入的手机号有错误"})
jQuery("#user_address").formValidator({onshow:"请输入您的联系地址",onfocus:"联系地址至少10个字",oncorrect:"填写正确"}).inputValidator({min:20,onerror:"你输入的联系地址太短了吧"});
jQuery("#postalcode").formValidator({onshow:"请您输入邮政编码",onfocus:"请正确填写邮政编码",oncorrect:"填写正确"}).inputValidator({min:6,max:6,onerror:"邮政编码应该是6位的"}).regexValidator({regexp:"zipcode",datatype:"enum",onerror:"您输入的邮政编码有错误"})
jQuery("#recipients").formValidator({onshow:"请输入收件人姓名",onfocus:"姓名至少2个字,最多5个字",oncorrect:"填写正确"}).inputValidator({min:4,max:10,onerror:"你填写不正确"}).regexValidator({regexp:"name",datatype:"enum",onerror:"姓名格式不正确"})
jQuery("#amount").formValidator({onshow:"请您填写订阅的套数",onfocus:"最少订阅1套",oncorrect:"填写正确"}).inputValidator({min:1,max:99,onerror:"你填写的不正确"}).regexValidator({regexp:"intege",datatype:"enum",onerror:"填写格式不正确"})
}

  回复  引用    
#779楼 2009-06-07 16:50 | mark35[未注册用户]
@dododragon
你的写法完全错了,像jQuery.formValidator.initConfig , jQuery("#user_name").formValidator(....) 这些代码是在页面加载时就“初始化”而不是在beforeSubmit时去“调用”的。

你这样看看:

<script type="text/javascript">

function transfer_order(){
var options = {
target: "#order_group",
url: "/template/order.aspx",
type: "POST",
beforeSubmit: check_order()
};
jQuery("#order").ajaxForm(options);
jQuery("#order_info").text("信息核对");
}

function check_order(){
if (!jQuery.formValidator.pageIsValid("1")) {
return false;
} else {
return true;
}
}

function formvalidate_init() {
jQuery.formValidator.initConfig({
formid:"order",
onerror:function(msg){alert(msg);return false;},
onsuccess : function() { return true; }
});

jQuery("#user_name").formValidator({onshow:"请输入您的姓名",onfocus:"姓名至少2个字,最多 5个字",oncorrect:"填写正确"}).inputValidator({min:4,max:10,onerror:"你填写不正确"}).regexValidator({regexp:"name",datatype:"enum",onerror:"姓名格式不正确"})
jQuery("#user_mobile").formValidator({onshow:"请输入您的手机号码",onfocus:"请正确填写手机号码",oncorrect:"填写正确"}).inputValidator({min:11,max:11,onerror:"号码必须是11位的"}).regexValidator({regexp:"mobile",datatype:"enum",onerror:"您输入的手机号有错误"})
jQuery("#user_address").formValidator({onshow:"请输入您的联系地址",onfocus:"联系地址至少10个字",oncorrect:"填写正确"}).inputValidator({min:20,onerror:"你输入的联系地址太短了吧"});
jQuery("#postalcode").formValidator({onshow:"请您输入邮政编码",onfocus:"请正确填写邮政编码",oncorrect:"填写正确"}).inputValidator({min:6,max:6,onerror:"邮政编码应该是6位的"}).regexValidator({regexp:"zipcode",datatype:"enum",onerror:"您输入的邮政编码有错误"})
jQuery("#recipients").formValidator({onshow:"请输入收件人姓名",onfocus:"姓名至少2个字,最多5个字",oncorrect:"填写正确"}).inputValidator({min:4,max:10,onerror:"你填写不正确"}).regexValidator({regexp:"name",datatype:"enum",onerror:"姓名格式不正确"})
jQuery("#amount").formValidator({onshow:"请您填写订阅的套数",onfocus:"最少订阅1 套",oncorrect:"填写正确"}).inputValidator({min:1,max:99,onerror:"你填写的不正确"}).regexValidator({regexp:"intege",datatype:"enum",onerror:"填写格式不正确"})

}

</script>

<script type="text/javascript">
$(document).ready(function(){
formvalidate_init();
});
</script>

  回复  引用    
#780楼 2009-06-08 10:10 | xiaoxiong[未注册用户]
$("#tel,#shouji").formValidator({tipid:"telTip",onshow:" ",onfocus:"联系电话或手机请至少填写一个!",oncorrect:"填写正确!"}).FunctionValidator({fun:allEmpty});
function allEmpty(val,elem)
{
return ($("#tel").val()=="" && $("#tel").val()=="")?'联系电话或手机请至少填写一个!':true;
}

这样写网页怎么提示错误呢?
网页错误详细信息

用户代理: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; Mozilla/4.0(Compatible Mozilla/4.0(Compatible-EmbeddedWB 14.59 http://bsalsa.com/ EmbeddedWB- 14.59 from: http://bsalsa.com/ ; CIBA; InfoPath.2)
时间戳: Mon, 8 Jun 2009 02:08:58 UTC


消息: 对象不支持此属性或方法
行: 21
字符: 2
代码: 0
URI: http://localhost/bx/index.html

  回复  引用    
#781楼 2009-06-08 15:12 | ddd[未注册用户]
好象用在asp.net页面上有问题,如果一个页面有多个服务器控件BUTTON(不是HTML的INPUT),始终点击每个BUTTON都会进行验证,启用分组验证后一个按钮还会验证两次。
因为一个页面不可能仅有一个BUTTON的,而通常验证只需要提交时才用到,每页都加分组也很麻烦,请问这个如何处理?

  回复  引用    
#782楼 2009-06-09 08:08 | dododragon[未注册用户]
@mark35
感谢你,按照你的写法,没有问题了。

  回复  引用    
#783楼 2009-06-09 09:42 | ddd[未注册用户]
如果按钮放在UpdatePanel里面只能验证一次,第二次提交时提示setting.0为空
  回复  引用    
#784楼 2009-06-10 16:30 | amoszw[未注册用户]
请教,ASP.NET的asp:LinkButton作为提交按钮,在表单校验不通过时,如何不让提交按钮执行后台代码(提交保存事件)?
  回复  引用    
#785楼 2009-06-11 09:40 | mark35[未注册用户]
@amoszw
如果是标准提交按钮 <input type='submit' ..... /> 那么当验证不通过不会提交。如果是其他类型按钮(比如 <input type='button' ... 或者 <button ..)那么得自己判断验证返回值,如果返回为false 则阻止提交流程。

  回复  引用    
#786楼 2009-06-11 15:30 | amoszw[未注册用户]
@mark35
非常感谢!!

解决方法是
function checkForm() {
if (!$.formValidator.pageIsValid('1')) {
return false;
} else {
return null;
}
}


<asp:LinkButton ID="LinkButton1" runat="server" OnClientClick="javascript:return checkForm();" onclick="LinkButton1_Click" CausesValidation="true">LinkButton提交</asp:LinkButton>


另还有其他问题,就是:

--引用--------------------------------------------------
wenzhu: 时间的验证好像有点问题, 当时间没有通过的时候,提交时,提交按钮的值就变成了时间,时间插件就自动跑出来了
--------------------------------------------------------

我也发现同样的问题,我用的版本是V3.3,用asp:LinkButton作为提交按钮,还有就是日期不能验证其在min: "1900-01-01", max: "2000-01-01"之间
如:
$("#csny").focus(function() { WdatePicker({ skin: 'whyGreen', oncleared: function() { $(this).blur(); }, onpicked: function() { $(this).blur(); } }) })
.formValidator({onshow: "请输入的出生日期", onfocus: "请输入的出生日期,不能全部是0哦", oncorrect: "你输入的日期合法" })
.inputValidator({ min: "1900-01-01", max: "2000-01-01", type: "date", onerror: "日期必须在\"1900-01-01\"和\"2000-01-01\"之间" });

  回复  引用    
#787楼 2009-06-13 08:24 | 大鸟渣[未注册用户]
老大 怎么获取脚本啊 我点获取脚本 复制在TXT文件上 为空白 请及时联系我 EMAIL
  回复  引用    
#788楼 2009-06-16 20:59 | mengqingyu[未注册用户]
发现个bug 如果用这个插件的ajax验证 当他访问服务器端的时候 这个表单的验证码会丢失 如果不用插件的ajax验证码会存在在session里但是只要用了一次 session里的验证码就丢了 而且我试过在第一次ajax请求时候取得session一样是null

  回复  引用    
#789楼 2009-06-18 20:36 | 盒子盒子
楼主您好!有个问题请您帮忙!我使用下面的代码想实现AJAX的动态验证用户是否存在,可以实现。但同相同的用户不可以被验证多次。我应该怎么修改AJAX的内容呀!谢谢!
$(document).ready(function(){
alert("11111");
$.formValidator.initConfig({onError:function(msg){alert(msg)}});
$("#username").formValidator({
onshow:"请输入用户名",onfocus:"用户名为6至16个字符",oncorrect:"该用户名可以使用"
}).InputValidator({min:6,max:16,onerror:"用户名长度有误"
}).RegexValidator({
regexp:"username",datatype:"enum",onerror:"用户名格式不正确"
}).AjaxValidator({
type : "get",
url : "student/operate.do",
data: "op=checkReg&ram=" + Math.random(),
success : function(data){
if( data == 1 )
{
return true;
}
else
{
return false;
}
},
buttons: $("#regButton"),
error: function(){alert("服务器没有返回数据,可能服务器忙,请重试");},
onerror : "该用户名已被使用",
onwait : "正在对用户名进行合法性校验,请稍候..."
}).DefaultPassed();
});

  回复  引用    
#790楼 2009-06-18 20:55 | 盒子盒子
例如:

首先将输入用户名:aaaaaa将光标移到密码位置,会提示“该用户名可以使用”。然后将光标移动到用户名输入框会提示“用户名为6至16个字符”,再将光标移动到密码位置还是提示“用户名为6至16个字符”。我想实现的是当输入用户名后每当光标移动到用户名出都会调用ajax中url 的方法。我该如何修改上面的代码呢!

谢谢

  回复  引用    
#791楼 2009-06-18 21:03 | 盒子盒子
请问调用AjaxValidator({
type : "get",
url : "student/operate.do",
data: "op=checkReg&ram=" + Math.random(),
success : function(data){
if( data == 1 )
{
return true;
}
else
{
return false;
}
是chang事件,还是focus或blur事件。

  回复  引用    
#792楼 2009-06-19 10:09 | kanaun[未注册用户]
我用验证框架和表单提交框架结合起来,添加成功后表单清空,但是点添加还是可以添加验证没有使用,请问怎么办?
  回复  引用    
#793楼 2009-06-19 16:36 | mark35[未注册用户]
@盒子盒子
默认是blur。如果是下拉菜单则为onchange

  回复  引用    
#794楼 2009-06-29 13:32 | rad
和ajaxForm插件有冲突?
$('#formModal').ajaxForm({target: 'targetid'});
$.formValidator.initConfig({ formid: 'formModal' });

同时绑定form的话就有冲突了 验证不起作用了
怎么解决?

  回复  引用    
#795楼 2009-06-29 14:08 | rad
哦 ajaxForm有个beforeSubmit属性
加个验证就可以了

  回复  引用    
#796楼 2009-07-03 10:32 | RTTA[未注册用户]
猫兄,我验证的页面使用的ajax提交,但是页面提交过一次后,页面元素不初始化,怎么才能初始化页面元素呢,不然验证就不起作用了
  回复  引用    
#797楼 2009-07-03 16:41 | 特斯太
AjaxValidator的后面跟着.DefaultPassed()时,第一次打开页面,对文本框的空值不验证。请猫兄指点一下
  回复  引用    
评论共4页: 上一页 1 2 3 4 



发表评论

昵称: [登录] [注册]

主页:

邮箱:(仅博主可见)

评论内容:

  登录  注册

[使用Ctrl+Enter键快速提交评论]

0 1034901




相关文章:

相关链接: