js 常用類

var JScriptLib = {
    /**
    *異步請求
    *rMethod 訪問方式 get or post
    *POST方式可以發送4MB數據 GET方式只能發送256KB數據
    *請求帶有參數用POST方式,POST方式將參數放置在頁面的隱藏控件內
    *沒有參數使用GET方式
    *對於請求的頁面在中途可能發生更改的,也最好用POST方式,用GET方式可能會拿不到最新的信息
    *rAsync 是否爲異步 true or false
    *rUrl 請求地址
    *rEncoding: application/x-www-form-urlencoded or application/json;charset=UTF-8
    *rParam 發送參數
    *callMethod 回調函數
    */
    ajax: function(rMethod, rAsync, rUrl, rEncoding, rParam, callMethod) {
        xmlHttp: NaN;
        //判斷瀏覽器           
        if (window.ActiveXObject) {
            xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); //IE           
        } else if (window.XMLHttpRequest) {
            xmlHttp = new XMLHttpRequest(); //非IE           
        } else {
            xmlHttp = NaN;
        }
        xmlHttp.open(rMethod, rUrl, rAsyn);
        xmlHttp.onreadystatechange = function() {
            //判斷狀態               
            if (xmlHttp.readyState == 4 && xmlHttp.status == 200) {
                callMethod(xmlHttp.responseText);
            }
        }
        //定義傳輸的文件HTTP頭信息
        xmlHttp.setRequestHeader("Content-Type", rEncoding); //採用的編碼方式
        xmlHttp.send(rParam);
    },
    /**
    *獲取document中elements對象 不考慮空格
    *obj document中elements標識 id name tagname(標籤名稱)
    *cmd 0 id 1 name 2 tagname
    *當0 返回唯一對象 當1、2 返回集合 否則返回FALSE
    */
    $: function(obj, cmd) {
        var temp;
        switch (cmd) {
            case 0: //id
                temp = document.getElementById(obj);
                break;
            case 1: //name
                temp = document.getElementsByName(obj);
                break;
            case 2: //tagname
                temp = document.getElementsByTagName(objtagname);
                break;
            default:
                temp = false;
                break;
        }
        return temp;
    },
    /**
    *字符串左右空格過濾
    *str 字符串
    *direct 0 全部 1 左邊 2右邊 3 左右兩邊
    *返回過濾後的字符串
    */
    trim: function(str, direct) {
        var temp = "";
        switch (direct) {
            case 0: //全部
                temp = str.replace(/\s+/g, "");
                break;
            case 1: //左邊
                temp = str.replace(/(^\s*)/g, "");
                break;
            case 2: //右邊
                temp = str.replace(/(\s*$)/g, "");
                break;
            case 3: //左右兩邊
                temp = str.replace(/(^\s*)|(\s*$)/g, "");
                break;
            default:
                temp = str;
                break;
        }
        return temp;
    },
    /**
    *判斷是否爲空 不考慮空格
    *str 對象任何類型
    */
    empty: function(str) {
        switch (typeof (str)) {
            case 'string':
                return str.length == 0 ? true : false;
                break;
            case 'number':
                return str == 0;
                break;
            case 'object':
                return str == null;
                break;
            case 'array':
                return str.length == 0;
                break;
            default:
                return true;
        }
    },
    /**
    *判斷值是否是int
    *int true 否則FALSE
    */
    isInt: function(intvar) {
        if (intvar == "") {
            return false;
        }
        reg = /\D+/;
        return !reg.test(intvar);
    },
    /**
    *判斷值是否是數據類型
    *number true 否則FALSE
    */
    isNumber: function(numval) {
        reg = /^[\d|\.|,]+$/;
        return reg.test(numval);
    },
    /**
    *判斷值是否是時間類型
    *time true 否則FALSE
    */
    isTime: function(timeval) {
        reg = /^\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}$/;
        return reg.test(timeval);
    },
    /**
    * 當前鼠標X座標
    */
    mouseX: function(e) {
        return Browser.isIE ? event.x + document.documentElement.scrollLeft - 2 : e.pageX;
    },
    /**
    *
    */
    request: function(url, item) {
        sValue = url.match(new RegExp("[\?\&]" + item + "=([^\&]*)(\&?)", "i"));
        return sValue ? sValue[1] : sValue;
    },
    /**
    *當前鼠標Y座標
    */
    mouseY: function(e) {
        return Browser.isIE ? event.y + document.documentElement.scrollTop - 2 : e.pageY;
    },
    /**
    *判斷傳入的兩個值是否相等 不考慮空格
    *obj1、obj2 兩個值 可以是任何類型的值
    *相等返回true 否則FALSE
    */
    equal: function(obj1, obj2) {
        return obj1 == obj2 ? true : false;
    },
    /**
    *格式驗證 不考慮空格
    *str 要驗證的字符串
    *驗證選擇 0郵箱 1手機號 2家庭電話 3郵編 4簡單身份證
    *返回true 驗證通過 FALSE驗證失敗
    */
    regularValidator: function(str, cmd) {
        reg = "";
        switch (cmd) {
            case 0: //郵箱
                reg = /^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/;
                break;
            case 1: //手機號
                reg = /^(13[0-9]{9})|(15[89][0-9]{8})$/
                break;
            case 2: //家庭電話
                reg = /^(([0\+]\d{2,3}-)?(0\d{2,3})-)?(\d{7,8})(-(\d{3,}))?$/;
                break;
            case 3: //郵編
                reg = /^[1-9][0-9]{5}$/;
                break;
            case 4: //身份證
                reg = /^(\d{18,18}|\d{15,15}|\d{17,17}x)$/;
                break;
            default:
                return false;
        }
        return reg.test(str);
    },
    /**
    *驗證身份證格式
    *str 要驗證的身份證號
    *返回 字符串結果
    */
    validatorIdCard: function(str) {
        temp = "";
        idcard = str;
        Errors = new Array("驗證通過!", "身份證號碼位數不對!", "身份證號碼出生日期超出範圍或含有非法字符!",
       "身份證號碼校驗錯誤!", "身份證地區非法!");
        area = { 11: "北京", 12: "天津", 13: "河北", 14: "山西", 15: "內蒙古", 21: "遼寧", 22: "吉林", 23: "黑龍江", 31: "上海",
            32: "江蘇", 33: "浙江", 34: "安徽", 35: "福建", 36: "江西", 37: "山東", 41: "河南", 42: "湖北", 43: "湖南", 44: "廣東",
            45: "廣西", 46: "海南", 50: "重慶", 51: "四川", 52: "貴州", 53: "雲南", 54: "西藏", 61: "陝西", 62: "甘肅", 63: "青海",
            64: "寧夏", 65: "新疆", 71: "臺灣", 81: "香港", 82: "澳門", 91: "國外"
        }
        idcard, Y, JYM;
        S, M;
        idcard_array = new Array();
        idcard_array = idcard.split("");
        if (area[parseInt(idcard.substr(0, 2))] == null) temp = Errors[4];
        switch (idcard.length) {
            case 15:
                if ((parseInt(idcard.substr(6, 2)) + 1900) % 4 == 0 || ((parseInt(idcard.substr(6, 2)) + 1900) % 100 == 0 && (parseInt(idcard.substr(6, 2)) + 1900) % 4 == 0)) {
                    ereg = /^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2] [0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9])) [0-9]{3}$/; //測試出生日期的合法性
                } else {
                    ereg = /^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2] [0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2] [0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}$/; //測試出生日期的合法性
                }
                if (ereg.test(idcard))
                    temp = Errors[0];
                else
                    temp = Errors[2];
                break;
            case 18:
                if (parseInt(idcard.substr(6, 4)) % 4 == 0 || (parseInt(idcard.substr(6, 4)) % 100 == 0 && parseInt(idcard.substr(6, 4)) % 4 == 0)) {
                    ereg = /^[1-9][0-9]{5}19[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2] [0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9])) [0-9]{3}[0-9Xx]$/; //閏年出生日期的合法性正則表達式
                } else {
                    ereg = /^[1-9][0-9]{5}19[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2] [0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2] [0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}[0-9Xx]$/; //平年出生日期的合法性正則表達式
                }
                if (ereg.test(idcard)) {
                    S = (parseInt(idcard_array[0]) + parseInt(idcard_array[10])) * 7 + (parseInt(idcard_array[1]) + parseInt(idcard_array[11])) * 9 +
     (parseInt(idcard_array[2]) + parseInt(idcard_array[12])) * 10 + (parseInt(idcard_array[3]) + parseInt(idcard_array[13])) * 5 +
     (parseInt(idcard_array[4]) + parseInt(idcard_array[14])) * 8 + (parseInt(idcard_array[5]) + parseInt(idcard_array[15])) * 4 +
     (parseInt(idcard_array[6]) + parseInt(idcard_array[16])) * 2 + parseInt(idcard_array[7]) * 1 + parseInt(idcard_array[8]) * 6 +
      parseInt(idcard_array[9]) * 3;
                    Y = S % 11;
                    M = "F";
                    JYM = "10X98765432";
                    M = JYM.substr(Y, 1);
                    if (M == idcard_array[17])
                        temp = Errors[0];
                    else
                        temp = Errors[3];
                } else
                    temp = Errors[2];
                break;
            default:
                temp = Errors[1];
                break;
        }
        return temp;
    },
    /**
    *編碼
    */
    htmlEncode: function(str) {
        div = document.createElement("div");
        text = document.createTextNode(str);
        div.appendChild(text);
        return div.innerHTML;
    },
    /**
    *解碼
    */
    htmlDecode: function(str) {
        div = document.createElement("div");
        div.innerHTML = str;
        return div.innerHTML;
    },
    /*
    *獲取cookie
    *decodeURIComponent() 函數可對 encodeURIComponent() 函數編碼的 URI 進行解碼
    */
    getCookie: function(check_name) {
        // first we'll split this cookie up into name/value pairs
        // note: document.cookie only returns name=value, not the other components
        var a_all_cookies = document.cookie.split(';');
        var a_temp_cookie = '';
        var cookie_name = '';
        var cookie_value = '';
        var b_cookie_found = false; // set boolean t/f default f
        for (i = 0; i < a_all_cookies.length; i++) {
            // now we'll split apart each name=value pair
            a_temp_cookie = a_all_cookies[i].split('=');


            // and trim left/right whitespace while we're at it
            cookie_name = a_temp_cookie[0].replace(/^\s+|\s+$/g, '');

            // if the extracted name matches passed check_name
            if (cookie_name == check_name) {
                b_cookie_found = true;
                // we need to handle case where cookie has no value but exists (no = sign, that is):
                if (a_temp_cookie.length > 1) {
                    cookie_value = unescape(a_temp_cookie[1].replace(/^\s+|\s+$/g, ''));
                }
                // note that in cases where cookie is initialized but no value, null is returned
                return cookie_value;
                break;
            }
            a_temp_cookie = null;
            cookie_name = '';
        }
        if (!b_cookie_found) {
            return null;
        }
    },
    /*
    *設置cookie
    */
    setCookie: function(name, value, expires, path, domain, secure) {
        // set time, it's in milliseconds
        var today = new Date();
        today.setTime(today.getTime());
        /*
        if the expires variable is set, make the correct
        expires time, the current script below will set
        it for x number of days, to make it for hours,
        delete * 24, for minutes, delete * 60 * 24
        */
        if (expires) {
            expires = expires * 1000 * 60 * 60 * 24;
        }
        var expires_date = new Date(today.getTime() + (expires));

        document.cookie = name + "=" + escape(value) +
        ((expires) ? ";expires=" + expires_date.toGMTString() : "") +
        ((path) ? ";path=" + path : "") +
        ((domain) ? ";domain=" + domain : "") +
        ((secure) ? ";secure" : "");
    },
    /*
    *刪除cookie
    */
    removeCookie: function(name, path, domain) {
        if (getCookie(name)) {
            document.cookie = name + "="
            + ((path) ? ";path=" + path : "")
            + ((domain) ? ";domain=" + domain : "")
            + ";expires=Thu, 01-Jan-1970 00:00:01 GMT";
        }
    },
    /*
    *獲取元素起點
    */
    getPosition: function(o) {
        var t = o.offsetTop;
        var l = o.offsetLeft;
        while (o = o.offsetParent) {
            t += o.offsetTop;
            l += o.offsetLeft;
        }
        var pos = { top: t, left: l };
        return pos;
    },
    /*
    *處理整個HTML文檔
    */
    cleanWhitespace1: function(element) {
        //如果不提供參數,則處理整個HTML文檔
        element = element || document;
        //使用第一個子節點作爲開始指針
        var cur = element.firstChild;
        //臨時變量用來保存當前節點的下個節點
        var tmp;
        //一直到沒有子節點爲止
        while (cur != null) {
            //保存當前節點的下個節點
            tmp = cur.nextSibling
            //如果節點爲文本節點,應且包含空格
            if (cur.nodeType == 3 && !/\S/.test(cur.nodeValue)) {
                //刪除這個文本節點
                element.removeChild(cur);
                //否則,它就是一個元素
            } else if (cur.nodeType == 1) {
                //遞歸整個文檔
                cleanWhitespace(cur);
            }
            cur = tmp; //遍歷子節點
        }
    },
    /*
    *清除本節點的空白,不遍歷子節點
    */
    cleanWhitespace: function(element) {
        var element = element;
        for (var i = 0; i < element.childNodes.length; i++) {
            var node = element.childNodes[i];
            if (node.nodeType == 3 && !/\S/.test(node.nodeValue))
                element.removeChild(node);
        }
    } //,此處加 , 符號在ie中報錯。但是在dreamweaver中沒錯
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章