一、引用jquery  

二、引用formValidator.js

//====================================================================================================
// [插件名称] jQuery formValidator
//----------------------------------------------------------------------------------------------------
// [描 述] jQuery formValidator表单验证插件,它是基于jQuery类库,实现了js脚本于页面的分离。对一个表
// 单对象,你只需要写一行代码就可以轻松实现20种以上的脚本控制。现支持一个表单元素累加很多种
// 校验方式,采用配置信息的思想,而不是把信息写在表单元素上,能比较完美的实现ajax请求。
//----------------------------------------------------------------------------------------------------
// [作者网名] 猫冬
// [邮 箱] wzmaodong@126.com
// [作者博客] http://wzmaodong.cnblogs.com
// [QQ群交流] 74106519
// [更新日期] 2011-04-30
// [版 本 号] ver4.0
//====================================================================================================
(function($) { $.formValidator =
{
//各种校验方式支持的控件类型
sustainType : function(id,setting)
{
var elem = $("#"+id).get(0);
var srcTag = elem.tagName;
var stype = elem.type;
switch(setting.validatetype)
{
case "InitValidator":
return true;
case "InputValidator":
return (srcTag == "INPUT" || srcTag == "TEXTAREA" || srcTag == "SELECT");
case "CompareValidator":
return ((srcTag == "INPUT" || srcTag == "TEXTAREA") ? (stype != "checkbox" && stype != "radio") : false);
case "AjaxValidator":
return (stype == "text" || stype == "textarea" || stype == "file" || stype == "password" || stype == "select-one");
case "RegexValidator":
return ((srcTag == "INPUT" || srcTag == "TEXTAREA") ? (stype != "checkbox" && stype != "radio") : false);
case "FunctionValidator":
return true;
}
}, //全局配置
initConfig : function(controlOptions)
{
var settings =
{
debug:false,
validatorgroup : "1",
alertmessage:false,
validobjectids:[],
ajaxobjectids:"",
forcevalid:false,
onsuccess: function() {return true;},
onerror: function() {},
submitonce:false,
formid:"",
autotip: false,
tidymode:false,
errorfocus:true,
wideword:true
};
controlOptions = controlOptions || {};
$.extend(settings, controlOptions);
//如果是精简模式,发生错误的时候,第一个错误的控件就不获得焦点
if(settings.tidymode){settings.errorfocus=false};
if(settings.formid!=""){$("#"+settings.formid).submit(function(){return $.formValidator.pageIsValid(settings.validatorgroup);})};
$('body').data(settings.validatorgroup, settings);
}, //如果validator对象对应的element对象的validator属性追加要进行的校验。
appendValid : function(id, setting )
{
//如果是各种校验不支持的类型,就不追加到。返回-1表示没有追加成功
if(!$.formValidator.sustainType(id,setting)) return -1;
var srcjo = $("#"+id).get(0);
//重新初始化
if (setting.validatetype=="InitValidator" || srcjo.settings == undefined ){srcjo.settings = new Array();}
var len = srcjo.settings.push( setting );
srcjo.settings[len - 1].index = len - 1;
return len - 1;
}, //触发每个控件上的各种校验
triggerValidate : function(returnObj)
{
switch(returnObj.setting.validatetype)
{
case "InputValidator":
$.formValidator.inputValid(returnObj);
break;
case "CompareValidator":
$.formValidator.compareValid(returnObj);
break;
case "AjaxValidator":
$.formValidator.ajaxValid(returnObj);
break;
case "RegexValidator":
$.formValidator.regexValid(returnObj);
break;
case "FunctionValidator":
$.formValidator.functionValid(returnObj);
break;
}
}, //设置显示信息
setTipState : function(elem,showclass,showmsg)
{
var setting0 = elem.settings[0];
var initConfig = $('body').data(setting0.validatorgroup);
var tip = $("#"+setting0.tipid);
if(showmsg==null || showmsg=="")
{
tip.hide();
}
else
{
if(initConfig.tidymode)
{
//显示和保存提示信息
$("#fv_content").html(showmsg);
elem.Tooltip = showmsg;
if(showclass!="onError"){tip.hide();}
}
else
{
tip.show().removeClass().addClass( showclass ).html( showmsg );
}
}
}, //把提示层重置成原始提示
resetTipState : function(validatorgroup)
{
var initConfig = $('body').data(validatorgroup);
$.each(initConfig.validobjectids,function(){
$.formValidator.setTipState(this,"onShow",this.settings[0].onshow);
});
}, //设置错误的显示信息
setFailState : function(tipid,showmsg)
{
var tip = $("#"+tipid);
tip.removeClass().addClass("onError").html(showmsg);
}, //根据单个对象,正确:正确提示,错误:错误提示
showMessage : function(returnObj)
{
var id = returnObj.id;
var elem = $("#"+id).get(0);
var isvalid = returnObj.isvalid;
var setting = returnObj.setting;//正确:setting[0],错误:对应的setting[i]
var showmsg = "",showclass = "";
var settings = $("#"+id).get(0).settings;
var intiConfig = $('body').data(settings[0].validatorgroup);
if (!isvalid)
{
showclass = "onError";
if(setting.validatetype=="AjaxValidator")
{
if(setting.lastValid=="")
{
showclass = "onLoad";
showmsg = setting.onwait;
}
else
{
showmsg = setting.onerror;
}
}
else
{
showmsg = (returnObj.errormsg==""? setting.onerror : returnObj.errormsg); }
if(intiConfig.alertmessage)
{
var elem = $("#"+id).get(0);
if(elem.validoldvalue!=$(elem).val()){alert(showmsg);}
}
else
{
$.formValidator.setTipState(elem,showclass,showmsg);
}
}
else
{
//验证成功后,如果没有设置成功提示信息,则给出默认提示,否则给出自定义提示;允许为空,值为空的提示
showmsg = $.formValidator.isEmpty(id) ? setting.onempty : setting.oncorrect;
$.formValidator.setTipState(elem,"onCorrect",showmsg);
}
return showmsg;
}, showAjaxMessage : function(returnObj)
{
var setting = returnObj.setting;
var elem = $("#"+returnObj.id).get(0);
if(elem.validoldvalue!=$(elem).val())
{
$.formValidator.ajaxValid(returnObj);
}
else
{
if(setting.isvalid!=undefined && !setting.isvalid){
elem.lastshowclass = "onError";
elem.lastshowmsg = setting.onerror;
}
$.formValidator.setTipState(elem,elem.lastshowclass,elem.lastshowmsg);
}
}, //获取指定字符串的长度
getLength : function(id)
{
var srcjo = $("#"+id);
var elem = srcjo.get(0);
sType = elem.type;
var len = 0;
switch(sType)
{
case "text":
case "hidden":
case "password":
case "textarea":
case "file":
var val = srcjo.val();
var initConfig = $('body').data(elem.settings[0].validatorgroup);
if (initConfig.wideword)
{
for (var i = 0; i < val.length; i++)
{
len = len + ((val.charCodeAt(i) >= 0x4e00 && val.charCodeAt(i) <= 0x9fa5) ? 2 : 1);
/*
if (val.charCodeAt(i) >= 0x4e00 && val.charCodeAt(i) <= 0x9fa5)
len = len + 2;
else
len = len + 1;
*/
}
}
else{
len = val.length;
}
break;
case "checkbox":
case "radio":
len = $("input[type='"+sType+"'][name='"+srcjo.attr("name")+"']:checked").length;
break;
case "select-one":
len = elem.options ? elem.options.selectedIndex : -1;
break;
case "select-multiple":
len = $("select[name="+elem.name+"] option:selected").length;
break;
}
return len;
}, //结合empty这个属性,判断仅仅是否为空的校验情况。
isEmpty : function(id)
{
return ($("#"+id).get(0).settings[0].empty && $.formValidator.getLength(id)==0);
}, //对外调用:判断单个表单元素是否验证通过,不带回调函数
isOneValid : function(id)
{
return $.formValidator.oneIsValid(id).isvalid;
}, //验证单个是否验证通过,正确返回settings[0],错误返回对应的settings[i]
oneIsValid : function (id)
{
var returnObj = new Object();
returnObj.id = id;
returnObj.ajax = -1;
returnObj.errormsg = ""; //自定义错误信息
var elem = $("#"+id).get(0);
var settings = elem.settings;
var settingslen = settings.length;
//只有一个formValidator的时候不检验
if (settingslen==1){settings[0].bind=false;}
if(!settings[0].bind){return null;}
for ( var i = 0 ; i < settingslen ; i ++ )
{
if(i==0){
if($.formValidator.isEmpty(id)){
returnObj.isvalid = true;
returnObj.setting = settings[0];
break;
}
continue;
}
returnObj.setting = settings[i];
if(settings[i].validatetype!="AjaxValidator") {
$.formValidator.triggerValidate(returnObj);
}else{
returnObj.ajax = i;
}
if(!settings[i].isvalid) {
returnObj.isvalid = false;
returnObj.setting = settings[i];
break;
}else{
returnObj.isvalid = true;
returnObj.setting = settings[0];
if(settings[i].validatetype=="AjaxValidator") break;
}
}
return returnObj;
}, //验证所有需要验证的对象,并返回是否验证成功。
pageIsValid : function (validatorgroup)
{
if(validatorgroup == null || validatorgroup == undefined){validatorgroup = "1"};
var isvalid = true;
var returnObj;
var error_tip = "^",thefirstid,name,name_list="^";
var errorlist=new Array();
var initConfig = $('body').data(validatorgroup);
$.each(initConfig.validobjectids,function()
{
//只校验绑定的控件
if(this.settings[0].bind){
name = this.name;
//name相同的只校验一次
if (name_list.indexOf("^"+name+"^") == -1) {
if(name) name_list = name_list + name + "^";
returnObj = $.formValidator.oneIsValid(this.id);
if (returnObj) {
//校验失败,获取第一个发生错误的信息和ID
if (!returnObj.isvalid) {
isvalid = false;
if (thefirstid == null) thefirstid = returnObj.id;
errorlist[errorlist.length] = returnObj.errormsg == "" ? returnObj.setting.onerror : returnObj.errormsg;
}
//为了解决使用同个TIP提示问题:后面的成功或失败都不覆盖前面的失败
if (!initConfig.alertmessage) {
var tipid = this.settings[0].tipid;
if (error_tip.indexOf("^" + tipid + "^") == -1) {
if (!returnObj.isvalid) {
error_tip = error_tip + tipid + "^";
}
$.formValidator.showMessage(returnObj);
}
}
}
}
}
}); //成功或失败后,进行回调函数的处理,以及成功后的灰掉提交按钮的功能
if(isvalid)
{
isvalid = initConfig.onsuccess();
if(initConfig.submitonce){$(":submit,:button").attr("disabled",true);}
}
else
{
var obj = $("#"+thefirstid).get(0);
initConfig.onerror(errorlist[0],obj,errorlist);
if(thefirstid!="" && initConfig.errorfocus){$("#"+thefirstid).focus();}
}
return !initConfig.debug && isvalid;
}, //ajax校验
ajaxValid : function(returnObj)
{
var id = returnObj.id;
var srcjo = $("#"+id);
var elem = srcjo.get(0);
var settings = elem.settings;
var setting = settings[returnObj.ajax];
var ls_url = setting.url;
if (srcjo.size() == 0 && settings[0].empty) {
returnObj.setting = settings[0];
returnObj.isvalid = true;
$.formValidator.showMessage(returnObj);
setting.isvalid = true;
return;
}
//获取要传递的参数
var initConfig = $('body').data(settings[0].validatorgroup);
var parm = $.param($(initConfig.ajaxobjectids).serializeArray());
parm = "clientid=" + id + (parm.length > 0 ? "&" + parm : "");
ls_url = ls_url + (ls_url.indexOf("?") > -1 ? ("&" + parm) : ("?" + parm));
//发送ajax请求
$.ajax(
{
type : setting.type,
url : ls_url,
cache : setting.cache,
data : setting.data,
async : setting.async,
timeout : setting.timeout,
dataType : setting.datatype,
success : function(data, textStatus, XMLHttpRequest){
if(setting.success(data, textStatus, XMLHttpRequest))
{
$.formValidator.setTipState(elem,"onCorrect",settings[0].oncorrect);
setting.isvalid = true;
}
else
{
$.formValidator.setTipState(elem,"onError",setting.onerror);
setting.isvalid = false;
}
},
complete : function(XMLHttpRequest, textStatus){
if(setting.buttons && setting.buttons.length > 0){setting.buttons.attr({"disabled":false})};
setting.complete(XMLHttpRequest, textStatus);
},
beforeSend : function(XMLHttpRequest){
//再服务器没有返回数据之前,先回调提交按钮
if(setting.buttons && setting.buttons.length > 0){setting.buttons.attr({"disabled":true})};
var isvalid = setting.beforesend(XMLHttpRequest);
if(isvalid)
{
setting.isvalid = false; //如果前面ajax请求成功了,再次请求之前先当作错误处理
$.formValidator.setTipState(elem,"onLoad",settings[returnObj.ajax].onwait);
}
setting.lastValid = "-1";
return isvalid;
},
error : function(XMLHttpRequest, textStatus, errorThrown){
$.formValidator.setTipState(elem,"onError",setting.onerror);
setting.isvalid = false;
setting.error(XMLHttpRequest, textStatus, errorThrown);
},
processData : setting.processdata
});
}, //对正则表达式进行校验(目前只针对input和textarea)
regexValid : function(returnObj)
{
var id = returnObj.id;
var setting = returnObj.setting;
var srcTag = $("#"+id).get(0).tagName;
var elem = $("#"+id).get(0);
var isvalid;
//如果有输入正则表达式,就进行表达式校验
if(elem.settings[0].empty && elem.value==""){
setting.isvalid = true;
}
else
{ var regexpresslist;
setting.isvalid = false;
if(typeof(setting.regexp)=="string")
{regexpresslist = [setting.regexp];}
else
{regexpresslist = setting.regexp;}
$.each(regexpresslist, function(i,val) {
var r = val;
if(setting.datatype=="enum"){r = eval("regexEnum."+r);}
if(r==undefined || r=="")
{
return true;
}
isvalid = (new RegExp(r, setting.param)).test($("#"+id).val()); if(setting.comparetype=="||" && isvalid)
{
setting.isvalid = true;
return true;
}
if(setting.comparetype=="&&" && !isvalid)
{
return true
}
});
if(!setting.isvalid) setting.isvalid = isvalid;
}
}, //函数校验。返回true/false表示校验是否成功;返回字符串表示错误信息,校验失败;如果没有返回值表示处理函数,校验成功
functionValid : function(returnObj)
{
var id = returnObj.id;
var setting = returnObj.setting;
var srcjo = $("#"+id);
var lb_ret = setting.fun(srcjo.val(),srcjo.get(0));
if(lb_ret != undefined)
{
if(typeof(lb_ret) === "string"){
setting.isvalid = false;
returnObj.errormsg = lb_ret;
}else{
setting.isvalid = lb_ret;
}
}
}, //对input和select类型控件进行校验
inputValid : function(returnObj)
{
var id = returnObj.id;
var setting = returnObj.setting;
var srcjo = $("#"+id);
var elem = srcjo.get(0);
var val = srcjo.val();
var sType = elem.type;
var len = $.formValidator.getLength(id);
var empty = setting.empty,emptyerror = false;
switch(sType)
{
case "text":
case "hidden":
case "password":
case "textarea":
case "file":
if (setting.type == "size") {
empty = setting.empty;
if(!empty.leftempty){
emptyerror = (val.replace(/^[ \s]+/, '').length != val.length);
}
if(!emptyerror && !empty.rightempty){
emptyerror = (val.replace(/[ \s]+$/, '').length != val.length);
}
if(emptyerror && empty.emptyerror){returnObj.errormsg= empty.emptyerror}
}
case "checkbox":
case "select-one":
case "select-multiple":
case "radio":
var lb_go_on = false;
if(sType=="select-one" || sType=="select-multiple"){setting.type = "size";}
var type = setting.type;
if (type == "size") { //获得输入的字符长度,并进行校验
if(!emptyerror){lb_go_on = true}
if(lb_go_on){val = len}
}
else if (type =="date" || type =="datetime")
{
var isok = false;
if(type=="date"){lb_go_on = isDate(val)};
if(type=="datetime"){lb_go_on = isDate(val)};
if(lb_go_on){val = new Date(val);setting.min=new Date(setting.min);setting.max=new Date(setting.max);};
}else{
stype = (typeof setting.min);
if(stype =="number")
{
val = (new Number(val)).valueOf();
if(!isNaN(val)){lb_go_on = true;}
}
if(stype =="string"){lb_go_on = true;}
}
setting.isvalid = false;
if(lb_go_on)
{
if(val < setting.min || val > setting.max){
if(val < setting.min && setting.onerrormin){
returnObj.errormsg= setting.onerrormin;
}
if(val > setting.min && setting.onerrormax){
returnObj.errormsg= setting.onerrormax;
}
}
else{
setting.isvalid = true;
}
}
break;
}
}, //对两个控件进行比较校验
compareValid : function(returnObj)
{
var id = returnObj.id;
var setting = returnObj.setting;
var srcjo = $("#"+id);
var desjo = $("#"+setting.desid );
var ls_datatype = setting.datatype; curvalue = srcjo.val();
ls_data = desjo.val();
if(ls_datatype=="number")
{
if(!isNaN(curvalue) && !isNaN(ls_data)){
curvalue = parseFloat(curvalue);
ls_data = parseFloat(ls_data);
}
else{
return;
}
}
if(ls_datatype=="date" || ls_datatype=="datetime")
{
var isok = false;
if(ls_datatype=="date"){isok = (isDate(curvalue) && isDate(ls_data))};
if(ls_datatype=="datetime"){isok = (isDateTime(curvalue) && isDateTime(ls_data))};
if(isok){
curvalue = new Date(curvalue);
ls_data = new Date(ls_data)
}
else{
return;
}
} switch(setting.operateor)
{
case "=":
setting.isvalid = (curvalue == ls_data);
break;
case "!=":
setting.isvalid = (curvalue != ls_data);
break;
case ">":
setting.isvalid = (curvalue > ls_data);
break;
case ">=":
setting.isvalid = (curvalue >= ls_data);
break;
case "<":
setting.isvalid = (curvalue < ls_data);
break;
case "<=":
setting.isvalid = (curvalue <= ls_data);
break;
default :
setting.isvalid = false;
break;
}
}, //定位漂浮层
localTooltip : function(e)
{
e = e || window.event;
var mouseX = e.pageX || (e.clientX ? e.clientX + document.body.scrollLeft : 0);
var mouseY = e.pageY || (e.clientY ? e.clientY + document.body.scrollTop : 0);
$("#fvtt").css({"top":(mouseY+2)+"px","left":(mouseX-40)+"px"});
}, reloadAutoTip : function(validatorgroup)
{
if(validatorgroup == undefined) validatorgroup = "1";
var initConfig = $('body').data(validatorgroup);
var jqObjs = $();
$.each(initConfig.validobjectids,function()
{
var settings = this.settings;
if(initConfig.autotip)
{
if(!initConfig.tidymode)
{
//获取层的ID、相对定位控件的ID和坐标
var setting = settings[0];
var afterid = "#"+setting.afterid;
var offset = $(afterid ).offset();
var y = offset.top;
var x = $(afterid ).width() + offset.left;
$("#"+setting.tipid).parent().css({left: x+"px", top: y+"px"});
}
}
});
}
}; //每个校验控件必须初始化的
$.fn.formValidator = function(cs)
{
var setting =
{
validatorgroup : "1",
empty :false,
automodify : false,
onshow :"请输入内容",
onfocus: "请输入内容",
oncorrect: "输入正确",
onempty: "输入内容为空",
defaultvalue : null,
bind : true,
ajax : true,
validatetype : "InitValidator",
tipcss :
{
"left" : "10px",
"top" : "1px",
"height" : "20px",
"width":"250px"
},
triggerevent:"blur",
forcevalid : false,
tipid : null,
afterid : null
}; //获取该校验组的全局配置信息
cs = cs || {};
if(cs.validatorgroup == undefined){cs.validatorgroup = "1"};
var initConfig = $('body').data(cs.validatorgroup); //如果为精简模式,tipcss要重新设置初始值
if(initConfig.tidymode){setting.tipcss = {"left" : "2px","width":"22px","height":"22px","display":"none"}}; //先合并整个配置(深度拷贝)
$.extend(true,setting, cs); return this.each(function(e)
{
var jqobj = $(this);
//自动形成TIP
var setting_temp = {};
$.extend(true,setting_temp, setting);
var tip = setting_temp.tipid ? setting_temp.tipid : this.id+"Tip";
if(initConfig.autotip)
{
if(!initConfig.tidymode)
{
//获取层的ID、相对定位控件的ID和坐标
if($("body [id="+tip+"]").length==0)
{
var afterid = setting_temp.relativeid ? setting_temp.relativeid : this.id;
var offset = $("#"+afterid ).position();
var y = offset.top;
var x = $("#"+afterid ).width() + offset.left;
$("<div class='formValidateTip'></div>").appendTo($("body")).css({left: x+"px", top: y+"px"}).prepend($('<div id="'+tip+'"></div>').css(setting_temp.tipcss));
setting.afterid = afterid ;
}
}
else
{
jqobj.showTooltips();
}
}
//每个控件都要保存这个配置信息
setting.tipid = tip;
$.formValidator.appendValid(this.id,setting); //保存控件ID
if($.inArray(jqobj,initConfig.validobjectids) == -1)
{
if (setting_temp.ajax) {
var ajax = initConfig.ajaxobjectids;
initConfig.ajaxobjectids = ajax + (ajax != "" ? ",#" : "#") + this.id;
}
initConfig.validobjectids.push(this);
} //初始化显示信息
if(!initConfig.alertmessage){
$.formValidator.setTipState(this,"onShow",setting.onshow);
} var srcTag = this.tagName.toLowerCase();
var stype = this.type;
var defaultval = setting.defaultvalue;
//处理默认值
if(defaultval){
jqobj.val(defaultval);
} if(srcTag == "input" || srcTag=="textarea")
{
//注册获得焦点的事件。改变提示对象的文字和样式,保存原值
jqobj.focus(function()
{
if(!initConfig.alertmessage){
//保存原来的状态
var tipjq = $("#"+tip);
this.lastshowclass = tipjq.attr("class");
this.lastshowmsg = tipjq.html();
$.formValidator.setTipState(this,"onFocus",setting.onfocus);
}
if (stype == "password" || stype == "text" || stype == "textarea" || stype == "file") {
this.validoldvalue = jqobj.val();
}
});
//注册失去焦点的事件。进行校验,改变提示对象的文字和样式;出错就提示处理
jqobj.bind(setting.triggerevent, function(){
var settings = this.settings;
var returnObj = $.formValidator.oneIsValid(this.id);
if(returnObj==null){return;}
if(returnObj.ajax >= 0)
{
$.formValidator.showAjaxMessage(returnObj);
}
else
{
var showmsg = $.formValidator.showMessage(returnObj);
if(!returnObj.isvalid)
{
//自动修正错误
var auto = setting.automodify && (this.type=="text" || this.type=="textarea" || this.type=="file");
if(auto && !initConfig.alertmessage)
{
alert(showmsg);
$(this).val(this.validoldvalue);
$.formValidator.setTipState(this,"onShow",setting.onshow);
}
else
{
if(initConfig.forcevalid || setting.forcevalid){
alert(showmsg);this.focus();
}
}
}
}
});
}
else if (srcTag == "select")
{
jqobj.bind({
//获得焦点
focus : function(){
if (!initConfig.alertmessage) {
$.formValidator.setTipState(this, "onFocus", setting.onfocus)
};
},
//失去焦点
blur : function(){jqobj.trigger("change")},
//选择项目后触发
change : function(){
var returnObj = $.formValidator.oneIsValid(this.id);
if(returnObj==null){return;}
if ( returnObj.ajax >= 0){
$.formValidator.showAjaxMessage(returnObj);
}else{
$.formValidator.showMessage(returnObj);
}
}
});
}
});
}; $.fn.inputValidator = function(controlOptions)
{
var settings =
{
isvalid : false,
min : 0,
max : 99999999999999,
type : "size",
onerror:"输入错误",
validatetype:"InputValidator",
empty:{leftempty:true,rightempty:true,leftemptyerror:null,rightemptyerror:null},
wideword:true
};
controlOptions = controlOptions || {};
$.extend(true, settings, controlOptions);
return this.each(function(){
$.formValidator.appendValid(this.id,settings);
});
}; $.fn.compareValidator = function(controlOptions)
{
var settings =
{
isvalid : false,
desid : "",
operateor :"=",
onerror:"输入错误",
validatetype:"CompareValidator"
};
controlOptions = controlOptions || {};
$.extend(true, settings, controlOptions);
return this.each(function(){
$.formValidator.appendValid(this.id,settings);
});
}; $.fn.regexValidator = function(controlOptions)
{
var settings =
{
isvalid : false,
regexp : "",
param : "i",
datatype : "string",
comparetype : "||",
onerror:"输入的格式不正确",
validatetype:"RegexValidator"
};
controlOptions = controlOptions || {};
$.extend(true, settings, controlOptions);
return this.each(function(){
$.formValidator.appendValid(this.id,settings);
});
}; $.fn.functionValidator = function(controlOptions)
{
var settings =
{
isvalid : true,
fun : function(){this.isvalid = true;},
validatetype:"FunctionValidator",
onerror:"输入错误"
};
controlOptions = controlOptions || {};
$.extend(true, settings, controlOptions);
return this.each(function(){
$.formValidator.appendValid(this.id,settings);
});
}; $.fn.ajaxValidator = function(controlOptions)
{
var settings =
{
isvalid : false,
lastValid : "",
type : "GET",
url : "",
datatype : "html",
timeout : 999,
data : "",
async : false,
cache : false,
beforesend : function(){return true;},
success : function(){return true;},
complete : function(){},
processdata : false,
error : function(){},
buttons : null,
onerror:"服务器校验没有通过",
onwait:"正在等待服务器返回数据",
validatetype:"AjaxValidator"
};
controlOptions = controlOptions || {};
$.extend(true, settings, controlOptions);
return this.each(function()
{
$.formValidator.appendValid(this.id,settings);
});
}; //指定控件显示通过或不通过样式
$.fn.defaultPassed = function(onshow)
{
return this.each(function()
{
var settings = this.settings;
for ( var i = 1 ; i < settings.length ; i ++ )
{
settings[i].isvalid = true;
if(!$('body').data(settings[0].validatorgroup).alertmessage){
var ls_style = onshow ? "onShow" : "onCorrect";
$.formValidator.setTipState(this,ls_style,settings[0].oncorrect);
}
}
});
}; //指定控件不参加校验
$.fn.unFormValidator = function(unbind)
{
return this.each(function()
{
this.settings[0].bind = !unbind;
if(unbind){
$("#"+this.settings[0].tipid).hide();
}else{
$("#"+this.settings[0].tipid).show();
}
});
}; //显示漂浮显示层
$.fn.showTooltips = function()
{
if($("body [id=fvtt]").length==0){
fvtt = $("<div id='fvtt' style='position:absolute;z-index:56002'></div>");
$("body").append(fvtt);
fvtt.before("<iframe src='about:blank' class='fv_iframe' scrolling='no' frameborder='0'></iframe>"); }
return this.each(function()
{
jqobj = $(this);
s = $("<span class='top' id=fv_content style='display:block'></span>");
b = $("<b class='bottom' style='display:block' />");
this.tooltip = $("<span class='fv_tooltip' style='display:block'></span>").append(s).append(b).css({"filter":"alpha(opacity:95)","KHTMLOpacity":"0.95","MozOpacity":"0.95","opacity":"0.95"});
//注册事件
jqobj.bind({
mouseover : function(e){
$("#fvtt").append(this.tooltip);
$("#fv_content").html(this.Tooltip);
$.formValidator.localTooltip(e);
},
mouseout : function(){
$("#fvtt").empty();
},
mousemove: function(e){
$("#fv_content").html(this.Tooltip);
$.formValidator.localTooltip(e);
}
});
});
} })(jQuery);

三、初始化验证组$.formValidator.initConfig();

validationgroup用户设置验证分组,可以通过设置分组号,在需要时验证指定分组。

onerror:验证未通过时提示信息。

  $.formValidator.initConfig({ validatorGroup: "2", onError: function (msg) { alert(msg) } });

四、设置验证规则:

 $("#diyunique_work_days").formValidator({ validatorGroup: "2", onShow: "请输入天数", onFocus: "天数最小为1", onCorrect: "正确"}).inputValidator({ type: "number", min: 1, max: 1000, onError: "工期必须是大于1小于1000的数字" }).regexValidator({ regExp: "^\\d+$", param: "g", onError: "天数必须是大于1小于1000的数字" });
$.formValidator.initConfig({ validatorGroup: "5", onError: function (msg) { alert(msg) } });
$("#order_open_proxy_account").formValidator({ validatorGroup: "5", onShow: "请输入代理账号信息", onFocus: "请输入代理账号信息", onCorrect: "正确"}).inputValidator({ type: "size", min: 6, max: 20, onError: "代理账号长度在6-20之间" }).ajaxValidator({
url:"/OrderManage/IsExistsEmployee",
type:"post",
dataType:"json",
data:{name:$("#order_open_proxy_account").val()},
async:false,
success:function(data){
if(data.exists){
return true;
}else{
return true;
}
}
});

五、调用验证。

通过$.formValidator.pageIsValid("a"),a指前面validationgroup设置的分组号。

 //表单验证
if($.formValidator.pageIsValid('5')){
return true;
}else{
return false;
}

formvalidator插件的更多相关文章

  1. formValidator 插件 使用总结

    1. 大小写的问题, formvalidator 的属性 大小写问题一定要注意, 在踩过的坑里就包括这个, 把所有属性的第二个字母的开头全部写成大写 ,导致提示信息不能用,这个问题纠结了好久 2.er ...

  2. 表单验证插件 - formValidator

    表单验证插件 - formValidator * 引入formValidator插件文件 * 引入formValidator插件的主文件 * 引入formValidator插件的正则有关文件 * 引入 ...

  3. jQuery formValidator表单验证插件

    什么是jQuery formValidator? jQuery formValidator表单验证插件是客户端表单验证插件. 在做B/S开发的时候,我们经常涉及到很多表单验证,例如新用户注册,填写个人 ...

  4. jquery插件formValidator的ajaxValidator传参数问题

    最近在用formValidator插件,遇到一个问题.当我想用ajaxValidator的url传参数时,$("#tbName").val().document.getElemen ...

  5. formValidator输入验证、异步验证实例 + licenseImage验证码插件实例应用

    实例技术:springmvc 实现功能:完整用户登录流程.输入信息规则校验.验证码异步校验. 功能清单: 1.springmvc控制器处理get请求(/member/login.html),进行静态页 ...

  6. 超级强大的formValidator

    来源: http://www.cnblogs.com/wzmaodong http://www.neatstudio.com/show-73-1.shtml  (全) http://www.cnblo ...

  7. jQuery formValidator手册

    什么是jQuery formValidator? jQuery formValidator表单验证插件是客户端表单验证插件. 在做B/S开发的时候,我们经常涉及到很多表单验证,例如新用户注册,填写个人 ...

  8. formValidator

    formValidator输入验证.异步验证实例 + licenseImage验证码插件实例应用   实例技术:springmvc 实现功能:完整用户登录流程.输入信息规则校验.验证码异步校验. 功能 ...

  9. jQuery formValidator API

    jQuery formValidator插件的API帮助 目前支持5种大的校验方式,分别是:inputValidator(针对input.textarea.select控件的字符长度.值范围.选择个数 ...

随机推荐

  1. Python-5-字符串方法

    center >>> "The Middle by Jimmy Eat World".center(39) '     The Middle by Jimmy E ...

  2. Linq 查询内建议不要使用运算语句!

    比如list有2个值,当你运行完上述代码后,你会发现,你的ls中的Num没有按你预期的那样从0开始,导致这个问题的原因是:在你查询完毕后,执行的Count()方法,会导致查询语句中Num=num++再 ...

  3. Tomcat故障

    1.1 故障日志 31-May-2018 16:11:41.136 INFO [http-nio-8017-exec-5] org.apache.coyote.http11.AbstractHttp1 ...

  4. Qt中的标准对话框

    1. Qt为开发者提供了一些可复用的对话框类型,如QMessageBox,QFileDialog,QPrintDialog, QColorDialog, QInputDialog, QProgress ...

  5. java动态数组笔记

    动态数组: 在java.lang.reflect包下提供了Array类,包括一系列static方法,通过这些方法可动态的创建数组.给元素赋值.取出元素值等等 //理解数组引用——下面定义的objs数组 ...

  6. 1.2 rust cargo

    cargo是rust的编译与打包工具,可将rust打包成为一个可执行性文件.生成的可执行性文件不能跨系统的大版本,比如在linux7上打包,那么程序无法在linux6上执行. # cargo new ...

  7. c++ 封装线程库 2

    1.2线程回收: 首先得知道线程的两个状态: Joinable Detached 简单理解,如果一个线程是joinable的状态,那么这样的线程,就必须使用pthread_join来回收,否则程序结束 ...

  8. Spark为什么比Hadoop好?

    (1)Spark计算速度远胜于Hadoop的原因之一就在于中间结果是缓存在内存而不是直接写入到disk Hadoop每次计算先写磁盘,下次计算先从磁盘读,计算结果再写磁盘,如此往复.这对于迭代计算,是 ...

  9. 【3dsMax安装失败,如何卸载、安装3dMax 2019?】

    AUTODESK系列软件着实令人头疼,安装失败之后不能完全卸载!!!(比如maya,cad,3dsmax等).有时手动删除注册表重装之后还是会出现各种问题,每个版本的C++Runtime和.NET f ...

  10. Unity 将一个类序列化并以 ".asset" 类型存储在 Resources 文件夹下

    概念: 序列化 (Serialization)将对象的状态信息转换为可以存储或传输的形式的过程.在序列化期间,对象将其当前状态写入到临时或持久性存储区.以后,可以通过从存储区中读取或反序列化对象的状态 ...