/** * @class FormOperation 表单操作方法集合类 * @constructor */ function FormOperation(){ var TIP_CLASS_NAME = "tip-messages"; //消息显示框类 var TIP_SHOW_TIME = 5000; //消息框显示时间 /** * 检测必须字段 * @param{String} className 类名 * @param{Boolean} showTip 是否显示提示框,默认true * @returns {boolean} 检测通过返回true,未通过返回false */ this.requiredField = function(className,showTip){ var rf,rfCur; if(showTip===undefined)showTip = true; if($("."+className).length<1)return true; rf=$("."+className); for(var i=0;i<rf.length;i++){ rfCur = $(rf[i]); if($.trim(rfCur.val())==""||$.trim(rfCur.val())==rfCur.attr("placeholder")){ if(showTip){ this.showTip(rfCur,TIP_CLASS_NAME,false,0); } rfCur.focus(); return false; } } return true; } /** * 比较字段值 * @param{String} className 类名 * @param{Boolean} showTip 是否显示提示框,默认true * @returns {boolean} 比较未通过返回false,比较通过返回true */ this.compareField = function(className,showTip){ var cf,cfCur,curVal; if(showTip===undefined)showTip = true; if($("."+className).length<1)return true; cf=$("."+className); for(var i= 0,len = cf.length;i<len;i++){ cfCur = $(cf[i]); if((i===0)&&(curVal=cfCur.val())); if(curVal!==cfCur.val()){ if(showTip){ this.showTip(cfCur,TIP_CLASS_NAME,false,1); } cfCur.focus(); return false; } } return true; } /** * 特殊字段检测 * @param{String} className 类名 * @param{String} specialType 特殊字段类型,当前可选类型有:email/邮箱 * @param{Boolean} showTip 是否显示提示框,默认true * @returns {boolean} 通过,返回true,不通过,返回false */ this.specialField = function(className,specialType,showTip){ var sf,sfVal,reg; if(showTip===undefined)showTip = true; if($("."+className).length<1)return true; sf=$("."+className); sfVal = $.trim(sf.val()); if(specialType=="email"){ reg=/^\w+((-\w+)|(\.\w+))*\@{1}\w+\.{1}\w{2,4}(\.{0,1}\w{2}){0,1}/ig; if(sfVal.search(reg)===-1) { if(showTip){ this.showTip(sf,TIP_CLASS_NAME,false,1); } sf.focus(); return false; } } return true; } /** * 范围字段匹配 * @param{String} className 类名 * @param{String} specialType 特殊字段类型,当前可选类型有:email/邮箱 * @param{Boolean} showTip 是否显示提示框,默认true * @returns {boolean} 通过,返回true,不通过,返回false */ this.scopeField = function(className,showTip,minNumber,maxNumber){ var sf,sfVal; if(showTip===undefined)showTip = true; if($("."+className).length<1)return true; sf=$("."+className); if(minNumber===undefined)minNumber=0; if(maxNumber===undefined)maxNumber=1000000000000; sfVal = $.trim(sf.val()); if(minNumber<=sfVal.length&&sfVal.length<=maxNumber) { return true; }else{ if(showTip){ this.showTip(sf,TIP_CLASS_NAME,false,1); } sf.focus(); return false; } } /** * 生成提示框 * @param{Object} obj 待显示提示框元素对象 * @param{String} tipClassName 提示框类名 * @param{Boolean} autoHide 是否自动隐藏,默认true * @param{Number} msgType 消息类型,1/特殊消息|2/其它消息,默认1 * @returns {*|jQuery|HTMLElement} 不自动显示时,返回提示框对象 */ this.showTip = function(obj,tipClassName,autoHide,msgType){ var pY,pX,oW,msg,msgIndex; if((autoHide===undefined)&&(autoHide = true)); if(obj){ pY = obj.position().top; pX = obj.position().left; oW = obj.outerWidth(); // alert(pY+" "+pX); $("."+tipClassName).text(this.getTipMsg(obj,"formData",msgType)).css({top:pY+4+"px",left:pX+oW+"px"}).show(); if(autoHide){ setTimeout(function(){ $("."+tipClassName).hide(); },TIP_SHOW_TIME); }else{ return $("."+tipClassName); } } } /** * 提取消息 * @param{Object} obj 将要提取消息元素 * @param{String} objAttr 消息来源属性名,默认formData * @param{Number} msgType 消息类别 0/常规消息|1/特殊消息 默认0 * @returns {string|*} 目标消息 */ this.getTipMsg = function(obj,objAttr,msgType){ var msg,msgLength,msgIndex; if(obj===undefined)return; if(objAttr===undefined)objAttr = "formData"; if(msgType===undefined)msgType = 0; msg = $.trim($(obj).attr(objAttr)); msgIndex = msgLength = msg.length; if((msg.indexOf("&")!==-1)&&(msgIndex=msg.indexOf("&"))); switch (msgType){ case 0: msg = msg.substr(0,msgIndex);break; case 1: msg = msg.substr(msgIndex+1,msgLength);break; } return msg; } /** * 文本框文字回显(仅作用于不支持“placeholder”属性浏览器) * @param{String} className 文本框类名 * @param{String} replaceColorClassName 文字颜色替换类名 */ this.echo = function(className,replaceColorClassName){ var echoObj,echoText,echoCur; if (!(‘placeholder‘ in document.createElement(‘input‘))){ if(!(echoObj = $("."+className))) return; $.each(echoObj,function(i,obj){ $(obj).val($(obj).attr("placeholder")).addClass(replaceColorClassName); }); echoObj.focus(function(){ echoCur = $(this); echoText = echoCur.removeClass(replaceColorClassName).attr("placeholder"); if($.trim(echoCur.val())==echoText&&echoCur.val("")); }).focusout(function(){ if(($.trim(echoCur.val())==""||$.trim(echoCur.val())==echoText)&&echoCur.val(echoText).addClass(replaceColorClassName)); }); } } }
表单操作集合类.
时间: 2024-10-16 08:07:25