jQuery formValidator

jQuery formValidator表单验证插件是客户端表单验证插件。

在做B/S开发的时候,我们经常涉及到很多表单验证,例如新用户注册,填写个人资料,录入一些常规数据等等。在这之前,页面开发者(JavaScript开发者)需要编写大量的JavaScript来进行表单元素的校验,而这些校验在平时开发中不停的重复书写。

常见的校验如不能为空,必须满足长度要求,必须为数字,必须为Email等等。一般要判断的表单元素比较多,开发过程就显得枯燥无味——重复的代码不断重复,而且可能还要兼容多种浏览器,更多的考虑因素使人头疼不已。由于每个要校验的页面虽然逻辑基本相同,但是在大多数情况下,出于种种原因,开发者宁愿再编写一套JS文件,为了便于管理。

而插件本身包含的校验方式可以有无数种,只要你扩展正则表达式和函数。本插件于同类校验插件最大的区别:校验功能可以扩展;实现了校验代码于html代码的完全分离;你只需写一行配置信息就能完成一个表单元素的所有校验。插件本身提供了很多回调函数,使调用者能最大限度的发挥自己的想象能力来完成自己的业务需求。 在同一个页面你可以拥有很多个校验组,你只需在提交的按钮那里调用

return jQuery.formValidator.pageIsValid('校验组号') 来完成多个组的校验,互不干扰。

插件具备跨浏览器的能力。目前在ie和ff两种浏览器下调试通过,你不用再考虑在多浏览器下如何兼容,jQuery formValidator帮你做到了这些。

 

代码示例 :

首先导入包:

の

 

2编辑myvalidate.js 添加需要的验证条件:

//期刊管理
 $("#periodicalName").formValidator({onshow:"请输入期刊名称!",onfocus:"期刊名称为3-25个字符!",oncorrect:"期刊名称合法!"}).inputValidator({min:3,max:50,onerror:"期刊名称为3-25个字符!"});
 $("#periodicalNum").formValidator({onshow:"请输入期刊号!",onfocus:"期刊号为3-25个字符!",oncorrect:"期刊号合法!"}).inputValidator({min:3,max:50,onerror:"网站期刊号为3-25个字符!"});
 $("#periodicalDate").formValidator({onshow:"请选择期刊发布时间!",onfocus:"期刊发布时间不能为空!",oncorrect:"期刊发布时间合法!"}).inputValidator({min:3,max:50,onerror:"期刊发布时间不能为空!"});

 

3 添加html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
	<head>
		<link rel="stylesheet" href="$!path/main/css/common.css"
			type="text/css" />
		<title>添加期刊</title>
		<link rel="stylesheet" href="$!path/main/js/formValidator/validator.css" type="text/css"></link>
		<script type="text/javascript" src="$!path/main/js/formValidator/jquery_last.js"
			charset="UTF-8"></script>
		<script type="text/javascript" src="$!path/main/js/formValidator/formValidator.js"
			charset="UTF-8"></script>
		<script type="text/javascript" src="$!path/main/js/formValidator/formValidatorRegex.js"
			charset="UTF-8"></script>
		<script type="text/javascript" src="$!path/main/js/formValidator/myvalidate.js"
			charset="UTF-8"></script>
		<script charset="UTF-8" type="text/javascript" src="$!path/main/js/riqi/WdatePicker.js"></script>
	</head>
	<body>
		<div id="man_zone">
			<form action="$!path/savePeriodical.do" method="post" id="myForm" enctype="multipart/form-data">
				<table width="99%" border="0" align="center" cellpadding="0"
					cellspacing="1" bgcolor="#ced1d0">
					<tr>
						<td background="main/images/item/bglist.gif" colspan="6">
							<table width="98%" align="center" class="font14b">
								<tr>
									<th width="17%" height="25" align="left">
										当前位置:期刊管理 ->期刊新增ž
									</th>
								</tr>
							</table>
						</td>
					</tr>
					<tr class="left_title_1">
						<td width="40%">
							<div id="titw">
								期刊名称:
							</div>
						</td>
						<td>
							<div id="titput">
								<input class="input01" style="float: left" type="text"
									name="periodicalName" id="periodicalName" ></input>
							</div>
							 <div style="margin-left: 3px;float: left" id="periodicalNameTip">
                    </div> 
						</td>
					</tr>
					<tr class="left_title_1">
						<td>
							<div id="titw">
								期刊号:
							</div>
						</td>
						<td>
								<div id="titput">
								<input class="input01" style="float: left" type="text"
									name="periodicalNum" id="periodicalNum" ></input>
							</div>
							<div style="margin-left: 3px;float: left" id="periodicalNumTip"></div>
						</td>
					</tr>
						<tr class="left_title_1">
						<td width="150px;">
							<div id="titw">
								期刊发布时间:
							</div>
						</td>
						<td>
							<div id="titput">
								<input
								 readonly="readonly" 
								 name="periodicalDate"
								 id="periodicalDate" 
								 type="text"  
								 style="border: 1px solid #759d29; height: 20px; width: 160px; float: left;"
								 οnfοcus="WdatePicker({dateFmt:'yyyy-MM-dd'})" value=""/> 
									<a href="#"><img onClick="WdatePicker({el:'periodicalDate',dateFmt:'yyyy-MM-dd'})"
											src="$!path/main/js/riqi/skin/riqi.jpg" width="20"
											height="23" align="absmiddle" style="border: none;" />
									</a> 

							</div>
							<div style="margin-left: 3px;float: left" id="periodicalDateTip"></div>
						</td>
					</tr>
		
									
					<tr class="left_title_1">
						<td>
							<div id="titw">所属杂志:</div>
						</td>
						<td align="left">
							<div id="titput">
								<select name="magId" id="webUserXieHui" style="width:165px;">
									<option value="" selected="selected">
												----
									</option>
								#foreach($magazineach in $magazineList)  
								<option value="$!magazineach.magId"> 
									$!magazineach.magName 
								</option> 
								#end 
								</select>
							</div>
							<div id="webUserXieHuiTip" style="margin-left: 5px;float: left"></div>
						</td>
					</tr>
				
				
					<tr class="left_title_1">
						<td width="150px;">
							<div id="titw">
								缩略图:
							</div>
						</td>
						<td>
							<div id="titput">
								<input class="input01" style="float: left" type="file"
									name="periodicalImg" id="periodicalImg" />
							</div>
						</td>
					</tr>	
					
					<tr class="left_title_1">
						<td>
							<div id="titw">是否可以发文:</div>
						</td>
						<td>
						<div  style="float: left;">
							<input type="radio" name="periodicalFlag" value="1" checked="checked" />是
							<input type="radio" name="periodicalFlag" value="0" />否
						</div>
						</td>
					</tr>
					<tr>
						<td class="left_title_2" colspan="2" style="text-align: center">
							<input type="submit" name="sub" id="btnret" value="确定" />
							<input type="reset" name="res" id="btnret" οnclick="javascript:history.go(-1);" value="返回" />
						</td>
					</tr>
				</table>
			</form>
		</div>
	</body>
</html>

 


运行效果如图:

の

jQuery formValidator插件的API

目前支持5种大的校验方式,分别是:inputValidator(针对input、textarea、select控件的字符长度、值范围、选择个数的控制)、compareValidator(提供2个对象的比较,目前可以比较字符串和数值型)、ajaxValidator(通过ajax到服务器上做数据校验)、regexValidator(提供可扩展的正则表达式库) 、functionValidator (提供可扩展函数库来做校验)
每种格式支持的控件类型如下:
input textarea select 校验方式
---------------------------text radio checkbox file password textarea select-one
inputValidator--------√----√------√-----------√----√------------√----------√
compareValidator---√----√------√-----------√  
ajaxValidator----------√----√------√-----------√----√
regexValidator--------√----√------√-----------√ 
functionValidator-----√---- √------√-----------√----√------------√----------√
如果你用了不支持的校验功能,插件将忽略这个校验功能。
插件目前提示错误,有两种模式:showword和showalert,即文字提示和窗口提示,下面的4大验证方式,针对showalert这种方式不是都必须的,有些配置是没有作用的
下面分别罗列全局初始化和5种校验方式公开的属性
formValidator:
用来做初始化的类型,必须先执行。("√"为showalert可用参数)
属性属性名称默认值 showalert 详细解释 validatorGroup 校验组 "1" √ 一个页面的控件可以分成多个组,分开校验 empty 是否可以为空 false √   autoModify 输入错误离开焦点的时候,自动修复错误 true √ 先给出提示然后,自动修复,目前只支持text、file、textarea三种类型 onEmpty 空时候的提示 "输入内容为空"   可以为空,为空时候的提示。为空者不显示 onShow 显示时候的提示 "请输入内容"   为空者不显示 onFocus 获得焦点的提示 "请输入内容"   为空者不显示 onCorrect 输入正确后的提示 "输入正确"   当你焦点离开控件的时候,如果输入正确将出现该提示。为空者不显示 tipID 显示错误的容器ID 表单ID+"Tip"   如果不自动构建提示层,表示提示成的ID号
如果自动构建提示层,表示提示层相对的目标控件 tipCss 自动构建的提示层的样式 "left":"10px",
"top":"1px",
"height":"20px",
"width":"250px"   主要用于定位自动构建的提示层 forceValid 强制输入的值必须有效 true √ 是否把一个全角字符当做2个长度的参数 ajax 提交服务器 true √ ajaxValidator是否把该表单提交给服务器 defaultValue 默认值 null √ 所有input和select表单。如果你不设置就保持原值,一旦设置就设为默认值。 triggerEvent 默认值 blur √ 当前支持2种属性值:
blur:失去焦点的时候触发
change:当输入框里的值发生改变的时候触发 trimValue 默认值 false √ 当输入前后带空格的字符,是否自动把空字符去掉。
inputValidator:
属性属性名称默认值详细解释 type 比较类型 "size" (对select无效)
"size":表示比较长度 ,默认值
"number":数值型比较
"string":字符型比较
"date":短日期类型
"datetime":长日期类型 min 最小长度/值 0 默认数值型。如果进行字符比较,请收入字符型
对select-one而言inputValidator里的参数min和max表示选择的索引号范围
对select-multiple而言inputValidator里的参数min和max表示选择的个数 max 最大长度/值 99999999999 同上 onError 发生错误的提示 "输入错误" 为空者不显示。 onErrorMin 比min属性小的提示 null 当用户输入的值比min属性小的时候的错误提示 onErrorMax 比max属性大的提示 null 当用户输入的值比max属性大的时候的错误提示 empty 控件文本值是否允许两边为空两边都允许出现空默认值{leftEmpty:true,rightEmpty:true,emptyError:null}
leftEmpty:表示左边是否允许为空
rightEmpty:表示右边是否允许为空
emptyError:出现该错误的时候的提示,如果为null,则利用onError属性来提示错误。
compareValidator:
属性属性名称默认值详细解释 desID 要比较控件的ID "" 要跟源目标进行比较的目标ID operateor 比较符号 "=" 一共有如下几种类型:=、!=、>、>=、<、<= dataType 数据类型 "string" 目前只支持2种:"string"、"number","datetime","date" onError 发生错误的提示 "输入错误" 为空者不显示。
regexValidator:
属性属性名称默认值详细解释 regExp 正则表达式或表达式数组 "" 采用的是显式构造函数new RegExp("pattern"[,"flags"]); 由于Javascript 中'\' 被用作转义字符,所以在使用显示构造函数构造实例对象的时候,需要使用'\\' 代替'\' param 附加参数 "i" g:代表可以进行全局匹配。
i:代表不区分大小写匹配。
m:代表可以进行多行匹配。
可以任意组合,当然也可以不加参数 compareType 比较类型 "||" "||"或的关系   "&&"并列 dataType 数据类型 "string" "string":自己写的表达式,"enum":枚举名,字符串数组类型。具体请见demo3.htm
你可以自己修改、添加formValidatorRegex.js里的枚举项目名和表达式。 onError: 发生错误的提示 "输入错误" 为空者不显示。
ajaxValidator:
属性属性名称默认值详细解释 type 请求的类型 "GET" "POST" 或 "GET" url 发送到的URL地址 "" 在服务器端,你可以通过name为clientid获取触发验证的控件ID名 dataType 返回的数据类型 "html" xml、html、script、json、text timeout 超时设置 999 data 数据 ""   async 是否以异步的方式发送 true   success 当请求成功时调用的函数 null   processData 自动处理返回的数据为字符串 true 在默认的情况下,如果data选项传进的数据是一个对象而不是字符串,将会自动地被处理和转换成一个查询字符串 complete 当请求完成时调用的函数 null   beforeSend 当请求前时调用的函数 null 有个一个参数,根$.ajax里的beforeSend参数一样。 buttons 你点提交的按钮(组)jQuery对象 null 当你触发了ajax校验,buttons里对应的按钮(组)就会灰掉,一直等待服务器返回数据为止 error 当请求失败时调用的提示 "请求失败" 你可以自己定义这个错误,在error里自动打出。为空者不显示。 onWait 正在校验的提示 "正在等待服务器返回数据" onError 校验没有通过的提示 "服务器校验没有通过" 注意:
1、在提交的时候,自动追加clientID参数,表示触发校验的控件ID
2、在提交的时候,自动追加rand参数,这个是个随机数
3、几乎所有的属性跟$.ajax()的属性一样,请参考$.ajax()函数的帮助
functionValidator
属性属性名称默认值返回值的解释 fun 外部函数名()
参数1:元素的值,
参数2:元素对象默认当作处理过程 true/false 校验成功/失败 字符串校验失败,返回值当作自定义错误 无处理过程 onError 发生错误的提示 "输入错误" 函数return false的时候,显示该错误信息
公共函数:
主要是设置全局参数和判断是否通过校验
函数名函数说明 $.formValidator.initConfig 参数:配置类型 属性默认值说明 validatorGroup "1" 你要针对哪个组进行配置 formID "" 要自动注册pageIsValid函数的表单ID号 alertMessage false 是否弹出窗口 autoTip false 是否自动构建提示层 errorFocus true 发生错误的时候,第一个出错控件是否获得焦点 forceValid true 是否一直输入正确为止才允许离开焦点 wideWord true 是否把一个全角字符当做2个长度 onSuccess null 该组校验通过后的回调函数,返回false,阻止表单的提交 submitOnce false 校验通过后,是否灰掉所有的提交按钮 submitAfterAjaxPrompt 当前有数据正在进行服务器端校验,请稍候 onError null 该组校验失败后的回调函数, 有两个参数
参数1 一个校验没有通过的错误信息 参数2 一个校验没有通过的元素对象 参数3 所有的错误信息数组,你可以通过$.map来遍历 debug false 是否处于调试模式。true:不提交表单 $.formValidator.pageIsValid 一个参数: 不是配置类型 validatorGroup "1" 你要针对哪个组进行验证 $.formValidator.isOneValid 一个参数: 当时设置验证的表单元素ID。
返回是否校验成功的信息。 $.formValidator.setFailState function("tipid","显示的信息")
在showword模式下,如果你的额外校验没有通过,你可以通过它来设置成失败信息和状态 $.formValidator.getLength function("表单元素id")
checkbox或radiobutton表示(同组)选择的个数。
对select-one,选择索引的值
对select-multiple,inputValidator里的参数min和max表示选择的个数
其它input表示的表示字符长度。 $.formValidator.retSetTipState function(校验组号) 来把该组的提示内容恢复到onshow状态 $.formValidator.reloadAutoTip 重新定位自动构建的提示层

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值