📄 formvalidator.js
字号:
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 li_panduan = false;
if(sType=="select-one" || sType=="select-multiple"){setting.type = "size";}
if (setting.type == "size") { //获得输入的字符长度,并进行校验
if(!emptyerror){li_panduan = true}
if(li_panduan){val = len}
}
else
{
stype = (typeof setting.min);
if(stype =="number")
{
val = (new Number(val)).valueOf();
if(!isNaN(val)){
li_panduan = true;
}
}
if(stype =="string"){
li_panduan = true;
}
}
if(li_panduan)
{
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;
}
setting.isvalid = false;
}
else{
setting.isvalid = true;
}
}
else{
setting.isvalid = false;
}
break;
}
},
compareValid : function(returnObj)
{
var id = returnObj.id;
var setting = returnObj.setting;
var srcjo = $("#"+id);
var desjo = $("#"+setting.desid );
setting.isvalid = false;
curvalue = srcjo.val();
ls_data = desjo.val();
if(setting.datatype=="number")
{
if(!isNaN(curvalue) && !isNaN(ls_data))
{
curvalue = parseFloat(curvalue);
ls_data = parseFloat(ls_data);
}
else
{
return;
}
}
switch(setting.operateor)
{
case "=":
if(curvalue == ls_data){setting.isvalid = true;}
break;
case "!=":
if(curvalue != ls_data){setting.isvalid = true;}
break;
case ">":
if(curvalue > ls_data){setting.isvalid = true;}
break;
case ">=":
if(curvalue >= ls_data){setting.isvalid = true;}
break;
case "<":
if(curvalue < ls_data){setting.isvalid = true;}
break;
case "<=":
if(curvalue <= ls_data){setting.isvalid = true;}
break;
case "oneok":
if($.formValidator.isEmpty(id) || $.formValidator.isEmpty(isEmpty.desid) ){
setting.isvalid = false;
}else{
setting.isvalid = true;
}
}
}
};
//每个校验控件必须初始化的
$.fn.formValidator = function( msgOptions)
{
var setting =
{
validatorgroup : "1",
empty :false,
submitonce : false,
automodify : false,
onshow :"请输入内容",
onfocus: "请输入内容",
oncorrect: "输入正确",
onempty: "输入内容为空",
defaultvalue : null,
bind : true,
validatetype : "InitValidator",
tipcss :
{
"left" : "10px",
"top" : "1px",
"height" : "20px",
"width":"250px"
},
triggerevent:"blur"
};
//先合并整个配置(深度拷贝)
msgOptions = msgOptions || {};
$.extend(true,setting, msgOptions);
//获取该校验组的全局配置信息
var initConfig = $.formValidator.getInitConfig(setting.validatorgroup);
return this.each(function()
{
var setting_temp = {};
$.extend(setting_temp, setting);
//自动形成TIP
var tip = "";
if(initConfig.autotip)
{
if (!setting_temp.tipid){setting_temp.tipid = this.id+"Tip"};
tip = setting_temp.tipid;
if (!setting_temp.relativeid){setting_temp.relativeid = this.id};
aftertip = setting_temp.relativeid;
var y = getAbsoluteTop(aftertip) - 3;
var x = getElementWidth(aftertip) + getAbsoluteLeft(aftertip);
if($("#"+tip).length==0)
{
$("<div class='formValidateTip'></div>").appendTo($("body")).css({left: x+"px", top: y+"px"}).prepend($('<div id="'+tip+'"></div>').css(setting_temp.tipcss));
}
setting_temp.tipid = tip;
}
//手动TIP
else
{
if (!setting_temp.tipid){setting_temp.tipid = this.id+"Tip"};
tip = setting_temp.tipid;
}
//每个控件都要保存这个配置信息
$.formValidator.appendValid(this.id,setting_temp);
//保存控件ID
var validobjectids = initConfig.validobjectids;
if(validobjectids.indexOf("#"+this.id+" ")==-1){
initConfig.validobjectids = (validobjectids=="" ? "#"+this.id : validobjectids + ",#" + this.id);
}
//初始化显示信息
if(!initConfig.alertmessage){
$.formValidator.setTipState(tip,"onShow",setting.onshow);
}
//注册事件
var srcTag = this.tagName;
var stype = this.type;
var defaultvalue = setting.defaultvalue;
var jqobj = $(this);
if (srcTag == "INPUT" || srcTag=="TEXTAREA")
{
//处理默认值
if(defaultvalue){
if (stype == "checkbox" || stype == "radio") {
if(stype == "radio"){
if(this.value==defaultvalue){jqobj.attr("checked",true)}
}
else
{
jqobj.attr("checked",$.inArray(this.value, defaultvalue)>=0);
}
}else{
jqobj.val(defaultvalue);
}
}
//注册获得焦点的事件。改变提示对象的文字和样式,保存原值
jqobj.focus(function()
{
if(!initConfig.alertmessage){
$.formValidator.setTipState(tip,"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,1);
if(returnObj==null){return;}
if(returnObj.ajax >= 0)
{
if(this.validoldvalue!=$(this).val())
{
$.formValidator.setTipState(tip,"onLoad",settings[returnObj.ajax].onwait);
$.formValidator.ajaxValid(returnObj);
}
}
else
{
$.formValidator.showMessage(returnObj);
if(!returnObj.isvalid)
{
//自动修正错误
var auto = setting.automodify && (this.type=="text" || this.type=="textarea" || this.type=="file");
if(auto && !initConfig.alertmessage)
{
alert(returnObj.setting.onerror);
$.formValidator.setTipState(tip,"onShow",setting.onshow);
}
}
}
});
}
else if (srcTag == "SELECT")
{
//设置默认值
if (defaultvalue){
if(stype=="select-one"){
jqobj.attr("value",defaultvalue);
}
}
//获得焦点或单击
//stype=="select-one"?"focus":"click"
jqobj.bind(stype=="select-one"?"focus":"click", function(){
if(!initConfig.alertmessage){
$.formValidator.setTipState(tip,"onFocus",setting.onfocus);
}
});
//选择项目后触发
jqobj.bind(stype=="select-one"?"change":"blur" , function()
{
var returnObj = $.formValidator.oneIsValid(this.id,1);
if(returnObj==null){return;}
if ( returnObj.ajax >= 0 && this.validoldvalue!=$(this).val()){
$.formValidator.ajaxValid(this.id, returnObj.setting);
}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}
};
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",
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 : "",
addidvalue : true,
datatype : "html",
data : "",
async : true,
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(!$.formValidator.getInitConfig(settings[0].validatorgroup).alertmessage){
var ls_style = "onSuccess";
if(onshow){ls_style="onShow"};
$.formValidator.setTipState(settings[0].tipid,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();
}
});
};
})(jQuery);
function getElementWidth(objectId) {
x = document.getElementById(objectId);
return x.offsetWidth;
}
function getAbsoluteLeft(objectId) {
o = document.getElementById(objectId);
oLeft = o.offsetLeft;
while(o.offsetParent!=null) {
oParent = o.offsetParent;
oLeft += oParent.offsetLeft;
o = oParent;
}
return oLeft;
}
function getAbsoluteTop(objectId) {
o = document.getElementById(objectId);
oTop = o.offsetTop;
while(o.offsetParent!=null) {
oParent = o.offsetParent;
oTop += oParent.offsetTop;
o = oParent;
}
return oTop;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -