iValidate验证控件基于jquery,首先要引入jquery2以上版本。 其次引入iValidate.js,iValidate.css。 iValidate控件可验证input类型为text和password以及textarea元素。 如需验证select请使用扩展验证(supplyRules)。 如需验证一组radio或一组checkbox请使用扩展验证(supplyRules)并配合隐藏input只显示消息来实现。 通过API可实现单或多元素验证、表单验证、元素禁用、启用、激活销毁等。 控件主要有一下几种验证类型:
示例:
示例:
示例:
示例:
示例:
示例:
当你的表单中字段过多时,表单过高时,你对div增加overflow样式, 这个时候,你需要在该div的内部再建一个元素包裹住被验证的元素,上同时增加position: relative这个样式, 注意,不能把position: relative和overflow写在同一个元素中。 为了使你在滚动div时,tip消息验证一起滚动。
示例:
| 方法 | 参数 | 返回值 | 使用说明 |
iValidate.init(element, config); |
element,config | N/A |
element为HTML的DOM对象。 可修改config,其的结构及默认值为:
config: {
// 位置
position: {
// tip上中下,左中右显示位置
at: "bottom right",
// tip和尖角的位置调整
adjust: {
tipV: 0, // tip上下调整的位置
tipH: 0, // tip左右调整的位置
angleV: 0, // 尖角上下调整的位置
angleH: 0, // 尖角左右调整的位置
trslt: 2.3 // canvas绘画移动调整参数
}
},
// 尖角宽高,和线宽
angleSzie:{
width: 8,
height: 8,
lineWidth: "auto"
},
// tip的样式与显示动画,有scaleFade和fade两种可选
style: {
classes: "ivtip-default",
effect: "scaleFade"
},
// 内容
content: "",
// 是否初始化时,创建Tip
isInitzCreateTip: false,
// 是否自动重置位置,以达到在放大缩小页面时tip在正确位置
autoReposition: true,
// 是否自动重绘canvas,以达到在放大缩小页面时尖角的分辨率正确
autoReDraw: true,
// 是否绑定触发验证事件(为false时,输入或鼠标移动至需要验证的元素不在做验证,需通过$.fn.ivValidForm()或$.fn.ivValid()触发验证)。
isValidEvent: true,
// 当isValidEvent为false时,自动隐藏tip的时间。
tipAutoHideTime: 3000,
// 延时执行tip显示或隐藏的时间
tipTimeout: 120,
// 重置Tip位动画速度
repTipSpeed: 100,
//div层级
zindex: 15000
}
|
iValidate.setConfig(configObj) |
configObj | N/A | 全局设置tip配置; 如:
var config = {
// 位置
position: {
// tip上中下,左中右显示位置
at: "bottom right",
// tip和尖角的位置调整
adjust: {
tipV: 0, // tip上下调整的位置
tipH: 0, // tip左右调整的位置
angleV: 0, // 尖角上下调整的位置
angleH: 0, // 尖角左右调整的位置
trslt: 2.3 // canvas绘画移动调整参数
},
// 是否绑定触发验证事件(为false时,输入或鼠标移动至需要验证的元素不在做验证,需通过$.fn.ivValidForm()或$.fn.ivValid()触发验证)。
isValidEvent: true,
// 当isValidEvent为false时,自动隐藏tip的时间。
tipAutoHideTime: 3000,
}
}
iValidate.setConfig(config);
|
iValidate.setRegTypes(regTypeObj) |
regTypeObj | N/A | 全局正则验证规则; 如:
var regTypeObj = {
"test1": {"regExp": /^\w+([-+.]\w+)/, "contentText": "消息1!"},
"test2": {"regExp": /^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])/, "contentText": "消息2!"}
};
iValidate.setRegTypes(regTypeObj);
|
iValidate.setSupplyRules(supplyRuleObj) |
supplyRuleObj | N/A | 全局扩展规则,注:补充验证的方法需要返回布尔值。
iValidate.setSupplyRules({
key1: {
contentText: 'xxxx', // 消息内容。
rule: function($elemt){
if(false){
return false;
}
return true
}
},
key2: {
/*
* 需要$.fn.ivValidForm()或$.fn.ivValid()触发异步验证。
* 是否异步验证(默认为false)。rule中会返回回调函数。
* 一般用于ajax异步调用后台验证规则,boolean值作为callback的参数。
* $elemt为验证元素的jquery对象
*/
isAsync: true,
contentText: 'yyyyy', // 消息内容。
rule: function($elemt, callback){
// 在页面中可把多个参数放入$elemt,再从此处取出。
// 判断条件是否满足执行。
if(yy){
return $.ajax({
url: 'xx',
data: {xx: 'xx'},
success: function(data, textStatus, jqXHR){
/*
* 如果返回的data类型是字符串,根据实际情况必须设置jqXHR.validStatus和data为相同的boolean值。
* data的值用于显示异常消息,jqXHR.validStatus参与验证的返回值计算。
* 如果data的返回值是boolean则无需操作。直接callback(data);
*/
if($.type(data) == 'string'){
// 此处设置为false,只是例子,请根据实际需要设置
jqXHR.validStatus = false;
data = false;
}
// callback参数需要boolean
callback(data);
}
});
}else{
callback(data);
return false;
}
}
}
});
|
$.fn.ivValidForm() |
callback/不传 | true/false |
通过jquery选择器得到表单的jquery对象,再调用ivValidForm()方法。如:$("#formId").ivValidForm(); 当$("#formId").ivValidForm(function(validStatus){....})异步验证时, validStatus参数为验证状态,true表示通过验证,false表示未通过。 且需要配合设置扩展规则中isAsync:true参数才能开启异步验证功能。 |
$.fn.ivValid() |
callback/不传 | true/false |
通过jquery选择器得到需验证jquery对象,再调用ivValid()方法。如:$("input").ivValid(); $.fn.ivValid(function(validStatus){....})与$.fn.ivValidForm(function(validStatus){....})的使用方式类似。 |
$.fn.ivSetContent(content) |
content | N/A | 用来设置验证失败后的消息提示内容。如:$("#text").ivSetContent("验证不通过!"); |
$.fn.ivDestroy() |
N/A | N/A | 销毁验证功能。如:$("textarea").ivDestroy(); |
$.fn.ivInvocation() |
N/A | N/A | 启用元素与验证,主要用于解除只读,禁用以及开启验证。如:$("#text").ivInvocation(); |
$.fn.ivDisabled() |
N/A | N/A | 禁用元素与验证。如:$("#text").ivDisabled(); |
$.fn.ivReadonly() |
N/A | N/A | 只读元素且不验证。如:$("#text").ivReadonly(); |
$.fn.ivResetStatus() |
N/A | N/A | 把元素重置为验证前的显示状态,且还原只读与禁用状态。如:$("#text").ivResetStatus(); |
$.fn.ivReposition(isRedraw) |
true/false | N/A | isRedraw为是否重画canvas(尖角)默认为true。复位消息提示框该方法只会取jquery返回的第一个元素进行复位。如:$("#text").ivReposition(); |