首页 > 代码库 > 表单操作集合类.

表单操作集合类.

/** * @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));            });        }    }}