CommonFn.js备存

2017-02-27 10:26:53  访问(2179) 赞(0) 踩(0)

(function () {

    var CF = {};

    window["CF"] = CF;

    // 字符串相关的方法 //
    var StrFn = {
        Trim: function (str) {
            // Trim //
            if (str == null)
                return "";

            // 要强行转义成字符串才能做trim的操作 //
            str = str + "";

            return str.replace(/(^\s*)|(\s*$)/g, "");
        },
        LeftTrim: function (str) {
            // 左边Trim //
            if (str == null)
                return "";

            // 要强行转义成字符串才能做操作 //
            str = str + "";

            return str.replace(/(\s*)(.*)/g, "$2");
        },
        Reverse: function (str) {
            // 反转 //
            if (str == null)
                return "";

            // 要强行转义成字符串才能做操作 //
            str = str + "";

            var theResult = "";
            var theLen = str.length;

            for (var i = theLen - 1; i >= 0; --i) {
                theResult = theResult + str.substr(i, 1);
            }
            return theResult;
        },
        RightTrim: function (str) {
            // 右边Trim //
            if (str == null)
                return "";

            str = StrFn.Reverse(str);

            str = StrFn.LeftTrim(str);

            str = StrFn.Reverse(str);

            return str;
        },
        IsBlank: function (str) {
            // 是否为空 //
            if (str == null)
                return true;

            str = str + "";

            str = StrFn.Trim(str);

            if (str == "")
                return true;

            return false;
        },
        GetLowerCase: function (str) {
            // 转成小写 //
            if (str == null)
                return "";

            // 要强行转义成字符串才能做操作 //
            str = str + "";


            return str.toLowerCase();
        },
        GetUpperCase: function (str) {
            // 转成大写 //
            if (str == null)
                return "";

            // 要强行转义成字符串才能做操作 //
            str = str + "";

            return str.toUpperCase();
        },
        Contains: function (str, strChar) {
            // 是否包含字符串 //
            if (str == null)
                return false;

            if (strChar == null)
                return false;

            if (strChar == "")
                return true;

            var idx = str.indexOf(strChar);

            if (idx == -1)
                return false;

            return true;
        },
        StartsWith: function (str, theChar) {
            // 是否开始于某个字符 //
            if (str == null || str == "" || theChar == null || theChar == "")
                return false;

            var idx = str.indexOf(theChar);

            if (idx == 0)
                return true;
            else
                return false;
        },
        EndsWith: function (str, theChar) {
            // 是否为空 //
            if (str == null || str == "" || theChar == null || theChar == "")
                return false;

            var idx = str.lastIndexOf(theChar);
            var strLen = str.length;
            var theCharLen = theChar.length;

            if (idx == strLen - theCharLen)
                return true;
            else
                return false;
        },
        NotStartsWith: function (str, theChar) {
            // 是否不开始于某个字符 //
            if (str == null || str == "" || theChar == null || theChar == "")
                return true;

            var idx = str.indexOf(theChar);

            if (idx == 0)
                return false;
            else
                return true;
        },
        SubString: function (str, startIndex) {
            if (str == null || str == "")
                return "";

            if (startIndex == 0)
                return str;

            var theLen = str.length;

            if (startIndex >= theLen)
                return str;

            return str.substr(startIndex, theLen);
        },
        SubStr: function (str, sub_length) {
            // 省略字符串 //
            var temp1 = str.replace(/[^\x00-\xff]/g, "**");//精髓   
            var temp2 = temp1.substring(0, sub_length);
            //找出有多少个*   
            var x_length = temp2.split("\*").length - 1;
            var hanzi_num = x_length / 2;
            sub_length = sub_length - hanzi_num;//实际需要sub的长度是总长度-汉字长度   
            var res = str.substring(0, sub_length);
            if (sub_length < str.length) {
                var end = res + "…";
            } else {
                var end = res;
            }
            return end;
        },
        Compare: function (objOne, objTwo, isTrim, isLower) {
            // 两个字符串的比较 //
            if (objOne == null || objTwo == null) {
                return (objOne == objTwo);
            }

            var one = "" + objOne;
            var two = "" + objTwo;

            if (isTrim) {
                one = StrFn.Trim(one);
                two = StrFn.Trim(two);
            }

            if (isLower) {
                one = one.toLowerCase();
                two = two.toLowerCase();
            }

            return (one == two);

        }
    };
    window["CF"]["StrFn"] = StrFn;


    // 对话框常用方法 //
    var DlgFn = {
        Alert: function (pI, alertTitle, alertText) {
            // 弹窗提示 //
            swal({
                title: alertTitle,
                text: alertText
            });
        },
        AlertText: function (pI, alertTitle) {
            // 弹窗提示 //
            swal({
                title: alertTitle
            });
        },
        AlertError: function (pI, alertTitle) {
            // 错误提示 //
            swal({
                title: alertTitle,
                type: "error"
            });
        },         
        AlertCtrlError: function (pI, alertTitle, focusCtrlId, selectCtrlId) {
            // 没有达到效果的代码 //
            // 就是没法让控件焦点 //
            swal({
                title: alertTitle,
                type: "warning",
                showCancelButton: false,
                confirmButtonColor: "#DD6B55",
                confirmButtonText: "确定",
                cancelButtonText: "",
                closeOnConfirm: false,
                closeOnCancel: true
            },
            function (isConfirm) {
                // 关闭当前弹窗 //
                swal.close();

                // 设置控件focus和Select //
                if (focusCtrlId != null && focusCtrlId != "") {
                    var fCtrl = document.getElementById(focusCtrlId);
                    if (fCtrl != null) {
                        fCtrl.focus();
                    }
                }

                if (selectCtrlId != null && selectCtrlId != "") {
                    var sCtrl = document.getElementById(selectCtrlId);
                    if (sCtrl != null) {
                        sCtrl.select();
                    }
                }
            });
        }
    };
    window["CF"]["DlgFn"] = DlgFn;

    // 常用方法 //
    var CommonFn = {
        ErrorFileNameArray: function () {
            // 非法文件名数组 //
            var theResult = new Array("/", "\\", ":", ",", "*", "?", "\"", "<", ">", "|");

            return theResult;
        },
        HeadAllowCharArray: function () {
            // 允许开头的字符 //
            var theResult = new Array("A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "_");

            return theResult;
        },
        UrlHeadArray: function () {
            // URL打头的地址名 //
            var theResult = new Array("http:", "https:", "mailto:", "ftp:", "gopher:", "news:", "telnet:", "rtsp:", "mms:", "callto:", "bctp:", "ed2k:", "tencent:");

            return theResult;
        },
        IsFileName: function (obj) {
            // 是否有效的文件名 //
            if (obj == null || obj == "")
                return false;

            var i = 0;
            var cA = CommonFn.ErrorFileNameArray();
            var iLen = cA.length;
            var idx = -1;
            for (i = 0; i < iLen; ++i) {

                idx = obj.indexOf(cA[i]);

                if (idx != -1)
                    return false;
            }

            return true;
        },
        IsNotFileName: function (obj) {
            // 是否无效的文件名 //
            return !CommonFn.IsFileName(obj);
        },
        IsFileExtension: function (fileName, strEx, linkChar) {
            // 是否指定的文件后缀 // 
            if (strEx == null)
                return true;

            strEx = StrFn.Trim(strEx);

            if (strEx == "")
                return true;

            strEx = StrFn.GetLowerCase(strEx);
            fileName = StrFn.Trim(fileName);
            fileName = StrFn.GetLowerCase(fileName);

            if (linkChar == null)
                linkChar = "|";

            var eA = strEx.split(linkChar);
            var i = 0;
            var iLen = eA.length;

            for (i = 0; i < iLen; ++i) {
                if(eA[i] == null||eA[i] == "")
                    continue;

                if (StrFn.EndsWith(fileName, eA[i]))
                    return true;
            }

            return false;
        },
        FormatCurrency: function (num) {

            // 金额格式(保留2位小数)后格式化成金额形式 //
            num = num.toString().replace(/\$|\,/g, '');
            if (isNaN(num))
                num = "0";

            sign = (num == (num = Math.abs(num)));
            num = Math.floor(num * 100 + 0.50000000001);
            cents = num % 100;
            num = Math.floor(num / 100).toString();
            if (cents < 10)
                cents = "0" + cents;
            for (var i = 0; i < Math.floor((num.length - (1 + i)) / 3) ; i++)
                num = num.substring(0, num.length - (4 * i + 3)) + '' +
                        num.substring(num.length - (4 * i + 3));
            return (((sign) ? '' : '-') + num + '.' + cents);
        },
        BuildSearchUrlParam: function (linkChar, ctrlId) {
            // 构建搜索的Url参数 //
            var theValue = $("#" + ctrlId).val();

            if (theValue == undefined || theValue == null || theValue == "")
                return "";

            theValue = $.trim(theValue);

            if (theValue == "")
                return "";

            return linkChar + ctrlId + "=" + escape(theValue);
        },
        BooleanGet: function (theValue) {
            if (theValue == "1")
                return true;

            if (theValue == "0")
                return false;

            return theValue;
        }
    };
    window["CF"]["CommonFn"] = CommonFn;

    // 数字运算相关的方法 //
    var MathFn = {
        ToDefaultInt: function (str) {
            // 转成默认的Int值 //
            var theStr = StrFn.Trim(str);

            if (theStr == "")
                return 0;

            return parseInt(theStr, 10);
        },
        ToInt: function (str, defaultValue) {
            // 转成Int值 //
            var theStr = StrFn.Trim(str);

            if (theStr == "")
                return defaultValue;

            return parseInt(theStr, 10);
        },
        GetRandom: function () {
            // 获得随机数 //
            return Math.random();
        }
    };
    window["CF"]["MathFn"] = MathFn;

    // 时间相关的方法 //
    var DateFn = {
        IsPinYear: function (iYear) {
            // 判断是否是闰年 //
            if (iYear == null || isNaN(iYear))
                return false;

            if (0 == iYear % 4 && ((iYear % 100 != 0) || (iYear % 400 == 0)))
                return true;
            else
                return false;
        },
        MonthDaysGet: function (iYear, iMonth)
        {
            // 获得月份个数 //
            // 闰年二月为29天 //
            if (iYear == null || isNaN(iYear) || iMonth == null || isNaN(iMonth))
                return 0;

            if (iMonth < 1 || iMonth > 12)
                return 0;

           

            if (iMonth == 1
            || iMonth == 3
            || iMonth == 5
            || iMonth == 7
            || iMonth == 8
            || iMonth == 10
            || iMonth == 12) {
                return 31;
            }

            if (iMonth == 2) {
                if (DateFn.IsPinYear(iYear)) {
                    return 29;

                }
                else {
                    return 28;
                }
            }

            return 30;
        },
        GetHour: function () {
            // 获得小时 //
            var theValue = new Date();
            return theValue.getHours();
        },
        GetDateByStr: function (strDate) {
            // 字符串转日期格式,strDate要转为日期格式的字符串
            var date = eval('new Date(' + strDate.replace(/\d+(?=-[^-]+$)/,
            function (a) { return parseInt(a, 10) - 1; }).match(/\d+/g) + ')');
            return date;
        },
        DateAdd: function (sdate, days) {
            // 日期加天数得到新的日期  
            var a = new Date(sdate);
            a = a.valueOf();
            a = a + days * 24 * 60 * 60 * 1000;
            a = new Date(a);
            return a;
        },
        FormatDate: function (theDate, fmt) {
            // 格式化时间 //
            var o = {
                "M+": theDate.getMonth() + 1, //月份        
                "d+": theDate.getDate(), //日        
                "h+": theDate.getHours() % 12 == 0 ? 12 : theDate.getHours() % 12, //小时        
                "H+": theDate.getHours(), //小时        
                "m+": theDate.getMinutes(), //分        
                "s+": theDate.getSeconds(), //秒        
                "q+": Math.floor((theDate.getMonth() + 3) / 3), //季度        
                "S": theDate.getMilliseconds() //毫秒        
            };
            var week = {
                "0": "/u65e5",
                "1": "/u4e00",
                "2": "/u4e8c",
                "3": "/u4e09",
                "4": "/u56db",
                "5": "/u4e94",
                "6": "/u516d"
            };
            if (/(y+)/.test(fmt)) {
                fmt = fmt.replace(RegExp.$1, (theDate.getFullYear() + "").substr(4 - RegExp.$1.length));
            }
            if (/(E+)/.test(fmt)) {
                fmt = fmt.replace(RegExp.$1, ((RegExp.$1.length > 1) ? (RegExp.$1.length > 2 ? "/u661f/u671f" : "/u5468") : "") + week[theDate.getDay() + ""]);
            }
            for (var k in o) {
                if (new RegExp("(" + k + ")").test(fmt)) {
                    fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
                }
            }
            return fmt;
        },
        FormatDateByStr: function (theDate, fmt) {
            // 通过字符串格式化时间 //
            var dV = DateFn.GetDateByStr(theDate);
            return DateFn.FormatDate(dV, fmt);
        },
        getMonthDays: function (myMonth) {
            // 获得某月的天数 //
            var monthStartDate = new Date(nowYear, myMonth, 1);
            var monthEndDate = new Date(nowYear, myMonth + 1, 1);
            var days = (monthEndDate - monthStartDate) / (1000 * 60 * 60 * 24);
            return days;
        }
    };
    window["CF"]["DateFn"] = DateFn;

    // Http相关的方法 //
    var HttpFn = {
        GetQuery: function (key) {
            // 得到get方式提交的查询字符串 //
            var search = location.search.slice(1);
            var arr = search.split("&");
            var iLen = arr.length;
            var i = 0;
            var ar = null;
            for (i = 0; i < iLen; ++i) {
                var ar = arr[i].split("=");

                if (ar.length != 2)
                    continue;

                if (ar[0] == key) {
                    return ar[1];
                }
            }

            return "";
        },
        ChangeUrlParam: function (destiny, par, par_value) {

            // 修改地址栏URL参数
            // destiny:原来URL地址
            // par:修改参数
            // par_value:修改值

            var pattern = par + '=([^&]*)';
            var replaceText = par + '=' + par_value;
            if (destiny.match(pattern)) {
                var tmp = '/\\' + par + '=[^&]*/';
                tmp = destiny.replace(eval(tmp), replaceText);
                return (tmp);
            }
            else {
                if (destiny.match('[\?]')) {
                    return destiny + '&' + replaceText;
                }
                else {
                    return destiny + '?' + replaceText;
                }
            }
            return destiny + '\n' + par + '\n' + par_value;
        },
        getQueryString: function () {
            // 获取QueryString的数组 //
            var result = location.search.match(new RegExp("[\?\&][^\?\&]+=[^\?\&]+", "g"));
            if (result == null) {
                return "";
            }

            var iLen = result.length;

            for (var i = 0; i < iLen; ++i) {
                result[i] = result[i].substring(1);
            }
            return result;
        },
        getQueryStringByName: function (name) {
            //根据QueryString参数名称获取值
            var result = location.search.match(new RegExp("[\?\&]" + name + "=([^\&]+)", "i"));
            if (result == null || result.length < 1) {
                return "";
            }
            return result[1];
        },
        getQueryStringByIndex: function (index) {
            //根据QueryString参数索引获取值

            if (index == null) {
                return "";
            }
            var queryStringList = getQueryString();
            if (index >= queryStringList.length) {
                return "";
            }
            var result = queryStringList[index];
            var startIndex = result.indexOf("=") + 1;
            result = result.substring(startIndex);
            return result;
        }

    };
    window["CF"]["HttpFn"] = HttpFn;

    // 数组操作相关的方法 //
    var ArrayFn = {
        InsertItem: function (theArray, theItem, idx) {
            // 插入元素 //
            if (theArray == null)
                theArray = new Array();

            if (theItem == null)
                return theArray;

            var theLen = theArray.length;

            if (idx >= theLen || idx < 0)
                theArray[theLen] = theItem;
            else {
                for (var i = theLen; i > idx; --i) {
                    theArray[i] = theArray[i - 1];
                }

                theArray[idx] = theItem;
            }

            return theArray;
        },
        RemoveItem: function (theArray, theItem) {
            // 移除元素 //
            if (theArray == null)
                return false;

            if (theItem == null) {
                return false;
            }

            var theLen = theArray.length;

            if (theLen == 0) {
                return false;
            }

            var i = 0;

            for (i = 0; i < theLen; ++i) {
                if (theArray[i] == theItem)
                    break;
            }

            if (i == theLen) {
                return false;
            }


            while (i < (theLen - 1)) {
                theArray[i] = theArray[i + 1];
                ++i;
            }

            theArray.pop();

            return true;

        },
        MoveItem: function (theArray, theItem, idx) {
            // 数组移动项 //
            if (theArray == null || theItem == null)
                return false;

            ArrayFn.RemoveItem(theArray, theItem);

            ArrayFn.InsertItem(theArray, theItem, idx);

        },
        Merge: function (theArray, mergeArray) {
            // 合并元素 //
            if (theArray == null)
                theArray = new Array();

            if (mergeArray == null)
                return theArray;

            var mergeLen = mergeArray.length;

            if (mergeLen == 0)
                return theArray;

            var theLen = theArray.length;
            var i = 0;
            for (i = 0; i < mergeLen; ++i) {
                theArray[theLen + i] = mergeArray[i];
            }

            for (i = 0 ; i < mergeLen; ++i) {
                mergeArray.pop();
            }

            return theArray;
        }
    };
    window["CF"]["ArrayFn"] = ArrayFn;

    // 控件相关的方法 //
    var CtrlFn = {
        GetCtrl: function (ctrlId) {
            // 获得控件的ID //
            return document.getElementById(ctrlId);
        },
        SetAttribute: function (vCtrl, AttributeName, AttributeValue) {
            // 设置控件的attribute属性
            if (vCtrl == null)
                return false;

            if (StrFn.IsBlank(AttributeName))
                return false;

            vCtrl.setAttribute(AttributeName, AttributeValue);

            return true;
        },
        SetDisabled: function (ctrl) {
            // 设置控件的disabled属性 //
            if (ctrl == null)
                return false;

            return SetAttribute(ctrl, "disabled", "disabled");
        },
        SetDisabledByCtrlId: function (ctrlId) {
            // 通过ID设置控件的disabled属性 //
            var theCtrl = GetCtrl(ctrlId);

            return SetDisabled(theCtrl);
        },
        SetFocusAndSelectByCtrlId: function (ctrlId) {
            // 设置控件的focus和select属性 //
            var ctrl = document.getElementById(ctrlId);

            if (ctrl == null)
                return false;

            ctrl.focus();
            ctrl.select();
            return true;
        },
        SetFocusByCtrlId: function (ctrlId) {
            // 设置控件的focus //
            var ctrl = document.getElementById(ctrlId);

            if (ctrl == null)
                return false;

            ctrl.focus();

            return true;
        },
        AlertAndSetFocusAndSelectByCtrlId: function (alertMsg, ctrlId) {
            // alert提示和设置控件的focus和select属性 //
            alert(alertMsg);

            var ctrl = document.getElementById(ctrlId);

            if (ctrl == null)
                return false;

            ctrl.focus();
            ctrl.select();
            return true;
        },
        AlertAndSetFocusByCtrlId: function (alertMsg, ctrlId) {
            // alert提示和设置控件的focus属性 //
            alert(alertMsg);

            var ctrl = document.getElementById(ctrlId);

            if (ctrl == null)
                return false;

            ctrl.focus();

            return true;
        },
        FocusAndSelectCtrlById: function (ctrlId) {
            // 设置控件focus和Select //
            if (ctrlId == null || ctrlId == "")
                return;

            var theCtrl = document.getElementById(ctrlId);

            if(theCtrl == null)
                return;

            theCtrl.focus();
            theCtrl.select(); 
        },
        FocusAndSelectCtrl: function (focusCtrlId, selectCtrlId) {
            // 设置控件focus和Select //
            if (focusCtrlId != null && focusCtrlId != "") {
                var fCtrl = document.getElementById(focusCtrlId);
                if (fCtrl != null) {
                    fCtrl.focus();
                }
            }

            if (selectCtrlId != null && selectCtrlId != "") {
                var sCtrl = document.getElementById(selectCtrlId);
                if (sCtrl != null) {
                    sCtrl.select();
                }
            }
        },
        CtrlIsChecked: function (ctrl, defaultValue) {
            // 控件是否选中 //
            if (ctrl == null)
                return defaultValue;

            return ctrl.checked;
        },
        CtrlGetElementsByTagName: function (pCtrl, tagName) {
            // 通过tagName获得控件的数组 //
            if (pCtrl == null)
                return null;

            if (tagName == null || tagName == "")
                return null;

            var theResult = pCtrl.getElementsByTagName(tagName);

            return theResult;
        },
        IsTypeName: function (thisCtrl, typeName) {
            // 是否是指定的Type类型 //
            if (thisCtrl == null)
                return false;

            return StrFn.Compare(thisCtrl.type, typeName, true, true);
        }
    };
    window["CF"]["CtrlFn"] = CtrlFn;


    // CheckBox 控件相关的方法 //
    var CheckBoxFn = {
        IsCheck: function (ctrl) {
            // 控件是否选中 //
            if (ctrl == null)
                return false;

            return ctrl.checked;
        },
        IsCheckByCtrlId: function (ctrlId) {
            // 通过ID设置控件的选中 //
            var ctrl = document.getElementById(ctrlId);

            if (ctrl == null)
                return false;

            return ctrl.checked;
        },
        SetCheck: function (ctrl, bFlag) {
            // 设置控件选中 //
            if (ctrl == null)
                return false;

            ctrl.checked = bFlag;

            return true;
        }
    };

    window["CF"]["CheckBoxFn"] = CheckBoxFn;


    // CheckBox 控件相关的方法 //
    var ValidFn = {
        IsAllDigitChar: function (str) {
            // 判断传入的字符串是否是字符0-9 //
            if (str == null)
                return false;

            var reg = /[^0-9]/g;

            var theResult = (!reg.test(str));

            return theResult;
        },
        IsDigit: function (cCheck) {
            // 判断传入的字符是否是数字 //
            return (('0' <= cCheck) && (cCheck <= '9'));
        },
        IsAllDigit: function (str) {
            // 判断传入的字符串是否是数字 //
            if ((str == null) || (str.length == 0)) {
                return false;
            }

            var chCurrent;

            for (i = 0; i < str.length; i++) {
                chCurrent = str.charAt(i);
                if (!ValidFn.IsDigit(chCurrent)) {
                    return false;
                }
            }
            return true;
        },
        IsTheNumber: function (str) {

            // 判断传入的字符串是否是数字

            if (str == null)
                return false;

            str = str + ""; 

            if (str == "") {
                return false;
            }

            var i = 0;
            var bFind = false;

            var chCurrent = str.charAt(i);

            if (chCurrent == '-' || chCurrent == '+') {
                ++i;
                chCurrent = str.charAt(i);
                if (!ValidFn.IsDigit(chCurrent))
                    return false;
            }
            else if (!ValidFn.IsDigit(chCurrent))
                return false;

            ++i;

            for (; i < str.length; ++i) {
                chCurrent = str.charAt(i);
                if (!ValidFn.IsDigit(chCurrent)) {
                    if (chCurrent == '.') {
                        if (bFind)
                            return false;

                        bFind = true;
                    }
                    else
                        return false;
                }
            }

            return true;
        },
        IsTheInt: function (str) {
            // 判断传入的字符串是否是整型数 //

            if (str == null)
                return false;

            if (str.length == 0) {
                return false;
            }

            var i = 0;

            var chCurrent = str.charAt(i);

            if (chCurrent == '-' || chCurrent == '+') {
                ++i;
                chCurrent = str.charAt(i);
                if (!ValidFn.IsDigit(chCurrent))
                    return false;
            }
            else if (!ValidFn.IsDigit(chCurrent))
                return false;

            ++i;

            for (; i < str.length; ++i) {
                chCurrent = str.charAt(i);
                if (!ValidFn.IsDigit(chCurrent)) {
                    return false;
                }
            }
            return true;
        },
        IsAllChar:function(str){
            // 判断传入的字符串是否是字符a-zA-Z //
            if (str == null)
                return false;

            var reg = /[^a-zA-Z]/g;
            return (!reg.test(str));
        },
        IsCharAndNum: function (str) {
            // 判断传入的字符串是否是数字和字符a-zA-Z //
            if (str == null)
                return false;

            var reg = /[^0-9a-zA-Z]/g;
            return (!reg.test(str));
        },
        IsASCII: function (str) {
            // 判断传入的字符传是否是ASCII码 //
            if (str == null)
                return false;

            var len = str.length;
            var i = 0;
            for (i = 0; i < len; ++i) {
                if (parseInt(str.charCodeAt(i), 10) < 0) {
                    return false;
                }

                if (parseInt(str.charCodeAt(i), 10) > 255) {
                    return false;
                }
            }
            return true;
        },
        IsTheCorrectDay:function (objYear, objMonth, objDay) {

            if (objYear == null || objMonth == null || objDay == null)
                return false;


            var objTmpYear = StrFn.Trim("" + objYear);
            var objTmpMonth = StrFn.Trim("" + objMonth)();
            var objTmpDay = StrFn.Trim("" + objDay)();

            if (!ValidFn.IsAllDigitChar(objTmpYear))
                return false;

            if( !ValidFn.IsAllDigitChar(objTmpMonth))
                return false;

            if (!ValidFn.IsAllDigitChar(objTmpDay))
                return false;

            var iMonth = parseInt(objTmpMonth, 10);
            var iYear = parseInt(objTmpYear, 10);
            var iDay = parseInt(objTmpDay, 10);

            if (isNaN(iMonth) || isNaN(iYear) || isNaN(iDay))
                return false;

            if (iMonth < 1 || iMonth > 12)
                return false;

            if (iDay < 1) {
                return false;
            }

            var curMDay = DateFn.MonthDaysGet(iYear, iMonth);

            if (iDay > curMDay) {
                return false;
            }

            return true;
        },
        IsValidDate:function (stringDate) {
            // 判断是否是合法日期 //
            var strDate = StrFn.Trim(stringDate);

            if (strDate.length != 8)
                return false;

            if (!ValidFn.IsAllDigitChar(strDate))
                return false;

            var nYear = parseInt(strDate.substring(0, 4), 10);

            var nMonth = parseInt(strDate.substring(4, 6), 10);

            var nDay = parseInt(strDate.substring(6, 8), 10);

            if (isNaN(nYear) || isNaN(nMonth) || isNaN(nDay))
                return false;

            if (nMonth > 12 || nMonth <= 0 || nDay > 31 || nDay <= 0)
                return false;

            return ValidFn.IsTheCorrectDay(nYear, nMonth, nDay);

        },
        TextBoxIsEmptyByCtrlId: function (ctrlId) {
            // 校验TextBox是否为空 //
            var ctrl = document.getElementById(ctrlId);

            if (ctrl == null)
                return true;

            var theValue = StrFn.Trim(ctrl.value);

            if (theValue == "")
                return true;
            else
                return false;
        },
        DropDownListIsEmptyByCtrlId: function (ctrlId) {
            // 校验DropDownList是否为空 //
            var ctrl = document.getElementById(ctrlId);

            if (ctrl == null)
                return true;

            var theValue = StrFn.Trim(ctrl.value);

            if (theValue == "")
                return true;
            else
                return false;
        },
        CheckTextBox: function (bFlag, ctrlId, LabelName) {
            // 关闭校验 //
            if (bFlag == 0)
                return true;

            var theCtrl = document.getElementById(ctrlId);

            if (theCtrl == null) {
                alert("没有获得控件" + ctrlId);
                return false;
            }

            if (StrFn.Trim(theCtrl.value) == "") {
                alert("请输入" + LabelName);
                theCtrl.focus();
                theCtrl.select();
                return false;
            }

            return true;
        },
        CheckOper: function (bFlag, ctrlId, LabelName, checkType) {

            // 关闭校验 //
            if (bFlag == 0)
                return true;

            var theCtrl = document.getElementById(ctrlId);

            if (theCtrl == null) {
                alert("没有获得控件" + ctrlId);
                return false;
            }

            var theValue = StrFn.Trim(theCtrl.value);

            if (theValue == "") {
                if (bFlag == 1) {
                    alert("请输入" + LabelName);
                    theCtrl.focus();
                    theCtrl.select();
                    return false;
                }
                else {
                    return true;
                }
            }

            var checkResult = true;

            switch (checkType) {
                case "zip":
                    checkResult = ValidFn.IsValidZip(theValue);
                    break;
                case "tel":
                    checkResult = ValidFn.IsValidTel(theValue);
                    break;
                case "email":
                    checkResult = ValidFn.IsValidEmail(theValue);
                    break;
                case "mobile":
                    checkResult = ValidFn.IsValidMobile(theValue);
                    break;
                case "qq":
                    checkResult = ValidFn.IsValidQQ(theValue);
                    break;
            }

            if (!checkResult) {
                alert("请输入合理的" + LabelName);
                theCtrl.focus();
                theCtrl.select();
                return false;
            }

            return true;
        },
        CheckZip: function (bFlag, ctrlId, LabelName) {
            // 校验zip //
            return ValidFn.CheckOper(bFlag, ctrlId, LabelName, "zip");
        },
        CheckTel: function (bFlag, ctrlId, LabelName) {
            return ValidFn.CheckOper(bFlag, ctrlId, LabelName, "tel");
        },
        CheckEmail: function (bFlag, ctrlId, LabelName) {
            return ValidFn.CheckOper(bFlag, ctrlId, LabelName, "email");
        },
        CheckMobile: function (bFlag, ctrlId, LabelName) {
            return ValidFn.CheckOper(bFlag, ctrlId, LabelName, "mobile");
        },
        CheckQQ: function (bFlag, ctrlId, LabelName) {
            return ValidFn.CheckOper(bFlag, ctrlId, LabelName, "qq");
        },
        IsValidZip: function (zip) {

            if (zip == null)
                return false;

            var reg = /[^0-9]/g;

            if (reg.test(zip))
                return false;

            return zip.length == 6;
        },
        IsValidTel: function (theValue) {
            // 校验电话 //
            if (theValue == null)
                return false;

            var reg = /^[0-9]{3,4}(\-)?\d{7,8}(\(\d{1,6}\))?$/;
            return reg.test(theValue);
        },
        IsValidEmail: function (theValue) {
            // 校验Email //
            if (theValue == null)
                return false;

            var reg = /^[_a-zA-Z0-9+.]+@([_a-zA-Z0-9]+.)+[a-zA-Z0-9]{2,3}$/;

            return reg.test(theValue);
        },
        IsValidMobile: function (theValue) {

            if (theValue == null)
                return false;

            var reg = /^(((13[0-9]{1})|(15[0-9]{1})|(17[0-9]{1})|(18[0-9]{1}))+\d{8})$/;

            return reg.test(theValue);
        },
        IsValidQQ: function (theValue) {

            if (theValue == null)
                return false;

            var reg = /^[1-9][0-9]{4,}$/;

            return reg.test(theValue);
        },
        IsFloat: function (str) {
            // 是否浮点数 //
            if (str == "0")
                return true;

            // 是否浮点数 //
            var bFlag = (str.match(/^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$/) == null);

            if (!bFlag)
                return true;

            bFlag = (str.match(/^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$/) == null);

            if (!bFlag)
                return true;

            return false;
        },
        IsFloatGreaterEqualZero: function (str) {
            // 是否是大于等于0的浮点数 //
            if (str == "0")
                return true;

            // 是否浮点数 //
            var bFlag = (str.match(/^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$/) == null);

            if (!bFlag)
                return true;


            return false;
        },
        IsFloatLessZero: function (str) {
            // 是否小于0的浮点数 //
            var bFlag = (str.match(/^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$/) == null);

            if (!bFlag)
                return true;


            return false;
        }
    };
    window["CF"]["ValidFn"] = ValidFn;


    // App应用相关的方法 //
    var AppFn = {
        ToNew: function (pI) {
            // 转到新增 //
            if (pI == null) {
                window.location = "detail.aspx";
            }
            else {
                window.location = pI.NewUrl;
            }
        },
        ToEdit: function (pI, vId) {
            // 转去编辑 //
            if (pI == null) {
                window.location = "detail.aspx?id=" + escape(vId);
            }
            else {
                window.location = pI.EditUrl + escape(vId);
            }
        },
        ToView: function (pI, vId) {
            // 转去编辑 //
            if (pI == null) {
                window.location = "view.aspx?id=" + escape(vId);
            }
            else {
                window.location = pI.ViewUrl + escape(vId);
            }
        },
        ReturnList: function (pI) {
            if (pI == null) {
                window.location = "list.aspx";
            }
            else {
                window.location = pI.ListUrl;
            }
        },
        GetSaveUrl: function (pI) {
            if (pI == null)
                return "";

            // 如果自定义了保存地址 //
            if (pI.SaveUrl != null && pI.SaveUrl != "") {
                return pI.SaveUrl;
            }

            // 编辑模式 //
            if (pI.PkId != null && pI.PkId != "") {
                return "detail.aspx?action=save&id=" + escape(pI.PkId);
            }

            // 新增模式 //
            return "detail.aspx?action=save";
        },
        GetReturnListUrl: function (pI) {
            if (pI == null)
                return "";

            if(pI.ListUrl == undefined)
                return "list.aspx";

            // 如果自定义了保存地址 //
            if (pI.ListUrl != null && pI.ListUrl != "") {
                return pI.ListUrl;
            }

            return "list.aspx";
        },
        GetNewUrl:function (pI){
            if (pI == null)
                return "";

            if (pI.NewUrl == undefined)
                return "detail.aspx";

            // 如果自定义了保存地址 //
            if (pI.NewUrl != null && pI.NewUrl != "") {
                return pI.NewUrl;
            }

            return "detail.aspx";
        },
        GetEditUrl: function (pI, pkId) {
            // 获得编辑的页面 //
            if (pI == null)
                return "";

            pkId = escape(pkId);

            if (pI.EditUrl == undefined)
                return "detail.aspx?id=" + pkId;

            // 如果自定义了编辑地址 //
            if (pI.EditUrl != null && pI.EditUrl != "") {
                return pI.EditUrl + pkId;
            }

            return "detail.aspx?id=" + pkId;
        },
        GetViewUrl: function (pI, pkId) {
            // 获得查看的页面 //
            if (pI == null)
                return "";

            pkId = escape(pkId);

            if (pI.ViewUrl == undefined)
                return "view.aspx?id=" + pkId;

            // 如果自定义了查看地址 //
            if (pI.ViewUrl != null && pI.ViewUrl != "") {
                return pI.ViewUrl + pkId;
            }

            return "view.aspx?id=" + pkId;
        },
        RedirectUrl: function (url) {
            // 重定向地址 //
            window.location = url;
        },
        ToReturnList: function (pI) {
            // 返回列表 //
            var toUrl = AppFn.GetReturnListUrl(pI);
            window.location = toUrl;
        },
        GetDeleteSelectedAjaxUrl: function (pI, pkId) {
            // 获得查看的页面 //
            if (pI == null)
                return "";

            pkId = escape(pkId);

            if (pI.DeleteSelectedAjaxUrl == undefined)
                return "list.aspx?action=DeleteSelected&id=" + pkId;

            // 如果自定义了查看地址 //
            if (pI.DeleteSelectedAjaxUrl != null && pI.DeleteSelectedAjaxUrl != "") {
                return pI.DeleteSelectedAjaxUrl + pkId;
            }

            return "list.aspx?action=DeleteSelected&id=" + pkId;
        },
        GetAttributeValue: function (ctrl, attrName, defaultValue) {
            // 获得属性值 //
            var theResult = ctrl.attr(attrName);

            if (theResult == undefined || theResult == null || theResult == "")
                theResult = defaultValue;

            return theResult;
        },
        GetAttributeBooleanValue: function (ctrl, attrName, defaultValue) {
            // 获得属性的布尔值 //
            var theResult = ctrl.attr(attrName);

            if (theResult == undefined || theResult == null || theResult == "")
                theResult = defaultValue;

            if (theResult == "1")
                return true;

            if (theResult == "0")
                return false;

            return theResult;
        },
        GetDataColumnName: function (ctrl) {
            // 获得控件的DataColumnName //
            if (ctrl == null)
                return "";

            var theResult = ctrl.id;

            if (theResult == null || theResult == "")
                return "";

            var idx = theResult.indexOf("_");

            if (idx == -1)
                return theResult;

            theResult = StrFn.SubString(theResult, idx + 1);

            return theResult;
        },
        GetDataColumnNameById: function (ctrlId) {

            // 获得控件的DataColumnName //
            var theResult = ctrlId;

            if (theResult == null || theResult == "")
                return "";

            var idx = theResult.indexOf("_");

            if (idx == -1)
                return theResult;

            theResult = StrFn.SubString(theResult, idx + 1);

            return theResult;
        },
        GetEkDataColumnName: function (ctrl) {
            // 获得字段名 //
            if (ctrl == null)
                return "";

            var dataColumnName = AppFn.GetAttributeValue(ctrl, "datacolumnname", "");

            if (dataColumnName == "") {
                dataColumnName = AppFn.GetDataColumnName(ctrl);
            }

            return dataColumnName;
        },
        GetInputPostName: function (ctrlId) {
            // 获得post回发的字段名 //
            var ctrl = $("#" + ctrlId);

            if (ctrl == null)
                return "";

            var ekcode = AppFn.GetAttributeValue(ctrl, "ekcode", "z");
            var dataColumnName = AppFn.GetEkDataColumnName(ctrl);

            return ekcode + "_" + dataColumnName;
        },
        GetEkValidator: function (ctrlId) {
            // 获得校验 //
            var ctrl = $("#" + ctrlId);

            if (ctrl == null)
                return null;

            var theResult = new EkValidator();

            // 
            theResult.IsEnabled = AppFn.GetAttributeBooleanValue(ctrl, "JsCheckIsEnabled", false);

            // 
            theResult.IsCheckEmpty = AppFn.GetAttributeBooleanValue(ctrl, "JsCheckIsCheckEmpty", true);


            // 是否过滤空格 //
            theResult.IsTrim = AppFn.GetAttributeBooleanValue(ctrl, "JsCheckIsTrim", true);

            // 标签名 //
            theResult.LabelName = AppFn.GetAttributeValue(ctrl, "LabelName", "");

            // 校验方法 //
            theResult.CheckMethod = AppFn.GetAttributeValue(ctrl, "EmJsCheckMethodV", "");
            
            // 控件Id //
            theResult.CtrlId = ctrlId;

            // 设置控件焦点的Id //
            theResult.FocusCtrlId = AppFn.GetAttributeValue(ctrl, "JsCheckFocusCtrlId", ctrlId);

            // 设置控件select的Id //
            theResult.SelectCtrlId = AppFn.GetAttributeValue(ctrl, "JsCheckSelectCtrlId", theResult.FocusCtrlId);

            // 字段名 //
            theResult.DataColumnName = AppFn.GetAttributeValue(ctrl, "DataColumnName", "");

            // 获得自定的字段名 //
            if (theResult.DataColumnName == "") {
                theResult.DataColumnName = "$" + ctrlId;
            }


            return theResult;
        },
        GetSaveDetailData: function (pI) {
            // 获得录入的数据 //
            var theResult = [];

            var eA = $("[ek='1']");
            var eALen = eA.length;
            var i = 0;
            var eI = null;
            var eId = null;
            var eName = null;
            var eValue = null;

            for (i = 0; i < eALen; ++i) {
                eI = eA[i];
                eId = eI.id;

                eValue = $("#" + eId).val();

                // 转义在后台做 //
                // 前台只打印控件的ID //
                // eName = CF.AppFn.GetInputPostName(eId);
                eName = eId;

                theResult.push({ name: eName, value: eValue });
            }

            return theResult;
        },
        JsSaveCheck: function (pI) {
            var eA = $("[ek='1']");
            var eALen = eA.length;
            var i = 0;
            var eI = null;
            var eId = null;
            var eName = null;
            var eValue = null;
            var eVor = null;

            for (i = 0; i < eALen; ++i) {
                eI = eA[i];
                eId = eI.id;
                eVor = CF.AppFn.GetEkValidator(eId);

                if (!CF.JqValidFn.CheckCtrl(dpI, eVor))
                    return false;
            }

            return true;
        },
        DetailSaveClick: function (pI) {
            // 保存事件 //

            // 保存校验 //
            var bCheckFlag = AppFn.JsSaveCheck(pI);

            // 
            if (!bCheckFlag)
                return false;

            var ajaxData = AppFn.GetSaveDetailData(pI);
            var ajaxUrl = AppFn.GetSaveUrl(dpI);

            $.ajax({
                cache: false,
                async: true,
                url: ajaxUrl,
                data: ajaxData,
                dataType: "json",
                type: "post",
                success: function (data) {

                    swal({
                        title: "保存成功",
                        type: "success",
                        showCancelButton: true,
                        confirmButtonColor: "#DD6B55",
                        confirmButtonText: "返回列表",
                        cancelButtonText: "留在此页",
                        closeOnConfirm: false,
                        closeOnCancel: false
                    },
                    function (isConfirm) {
                        if (isConfirm) {
                            window.location = CF.AppFn.GetReturnListUrl(dpI);
                        } else {
                            window.location = window.location.href;
                        }
                    })
                },
                error: function (result, b) {
                    var eT = "发现系统错误,错误码:" + result.status;
                    swal({
                        title: "操作失败",
                        text: eT,
                        type: "error"
                    });
                }
            });
        }
    };
    window["CF"]["AppFn"] = AppFn;


    // JqGrid应用相关的方法 //
    var JqGridFn = {
        GetRecCount:function(pI){
            // 获得行数 //
            var cG = $("#" + pI.TableId);
            if (cG == null)
                return 0;

            return cG.getGridParam("reccount");
        },
        ResetSelection: function (pI) {
            // 重置选中行 //
            var cG = $("#" + pI.TableId);
            if (cG == null)
                return;

            return cG.resetSelection();
        },
        ClearGridData:function(pI){
            // 清除数据 //
            var cG = $("#" + pI.TableId);
            if (cG == null)
                return;

            return cG.clearGridData();
        },
        GetDataValue: function (sData, dcName) {
            // 获得指定字段的值 //
            if (dcName == "ID") {
                return sData.ID;
            }

            if (dcName == "id") {
                return sData.id;
            }

            if (dcName == "Id") {
                return sData.Id;
            }

            var theResult = null;

            eval("theReturn = sData." + dcName + "; ");

            return theResult;

        },
        GetSelRowValue: function (pI, dcName) {
            // 获得选中的行的关键字(ID) //
            var cG = $("#" + pI.TableId);
            var srIdx = cG.jqGrid("getGridParam", "selrow");
            if (!(srIdx)) {
                return null;
            }

            var sData = cG.jqGrid("getRowData", srIdx);

            if (dcName == null)
                dcName = pI.PkName;

            return JqGridFn.GetDataValue(sData, dcName);

        },
        ToEdit: function (pI) {
            // 编辑 //

            if (pI == null)
                return;

            var gridName = pI.TableId;
            var jqCtrl = $("#" + gridName);
            var srIdx = jqCtrl.jqGrid("getGridParam", 'selrow');

            if (srIdx) {
                var sData = jqCtrl.jqGrid("getRowData", srIdx);
                var vId = JqGridFn.GetDataValue(sData, pI.PkName);

                AppFn.ToEdit(pI, vId);
            }
            else {
                DlgFn.AlertText(pI, "请选择要编辑的记录");
            }
        },
        ToView: function (pI) {
            // 查看 //
            if (pI == null)
                return;

            var gridName = pI.TableId;
            var jqCtrl = $("#" + gridName);
            var srIdx = jqCtrl.jqGrid('getGridParam', 'selrow');

            if (srIdx) {
                var sData = jqCtrl.jqGrid('getRowData', srIdx);
                var vId = JqGridFn.GetDataValue(sData, pI.PkName);

                AppFn.ToView(pI, vId);
            }
            else {
                DlgFn.AlertText(pI, "请选择要查看的记录");
            }
        },
        GetRowDataByName: function (pI, rIdx, dcName) {
            // 获得指定行的字段值 //
            if (pI == null)
                return null;

            if (rIdx < 1)
                return null;

            var rowCount = JqGridFn.GetRecCount(pI);

            if (rIdx > rowCount)
                return null;

            var cG = $("#" + pI.TableId);

            if (cG == null)
                return null;

            var cI = cG.jqGrid("getRowData", rIdx);

            if (cI == null)
                return null;

            if (dcName == null)
                dcName = pI.PkName;

            return JqGridFn.GetDataValue(cI, dcName);
        },
        GetRowUpDownDataByName: function (pI, rIdx, isUp, dcName) {
            // 获得指定行的字段值 //
            if (pI == null)
                return null;

            rIdx = MathFn.ToInt(rIdx, 0);

            if (rIdx < 1)
                return null;

            var boolIsUp = CommonFn.BooleanGet(isUp);
            

            if (boolIsUp) {
                rIdx = rIdx - 1;
            }
            else {
                rIdx = rIdx + 1;
            }

            if (rIdx < 1)
                return null;

            var rowCount = JqGridFn.GetRecCount(pI);

            if (rIdx > rowCount)
                return null;

            var cG = $("#" + pI.TableId);

            if (cG == null)
                return null;

            var cI = cG.jqGrid("getRowData", rIdx);

            if (cI == null)
                return null;

            if (dcName == null)
                dcName = pI.PkName;

            return JqGridFn.GetDataValue(cI, dcName);
        },
        GetSelRowArrayValue: function (pI, dcName) {
            // 获得选中的数据的 //
            var cG = $("#" + pI.TableId);
            var srIdx = cG.jqGrid("getGridParam", "selarrrow");
            if (!(srIdx)) {
                return null;
            }

            var rowAIdx = srIdx;
            var iLen = rowAIdx.length;

            if (iLen == 0)
                return null;

            if (dcName == null)
                dcName = pI.PkName;

            var theResult = "";
            var isFirst = true;
            
            var i = 0;
            var cI = null;
            var keyValue = null;

            for (i = 0; i < iLen; ++i) {
                cI = cG.jqGrid("getRowData", rowAIdx[i]);

                if (cI == null)
                    continue;

                keyValue = JqGridFn.GetDataValue(cI, dcName);

                if (keyValue == null || keyValue == "") {
                    continue;
                }

                if (isFirst)
                    isFirst = false;
                else
                    theResult += ",";

                theResult += keyValue;
            }

            return theResult;
        }, 
        ViewHrefFormatter: function (cellvalue, options, rowObject) {
            // 格式化成查看 //
            var theId = rowObject.ID;
            return "<a href=\"view.aspx?id=" + theId + "\">" + cellvalue + "</a>";
        },
        DateFullFormatter: function (cellvalue, options, rowObject) {
            // 时间格式化 //
            return CF.DateFn.FormatDateByStr(cellvalue, "yyyy-MM-dd HH:mm:ss");
        },
        SelArrRow: function (gridName) {
            // 多选 //
            return $("#" + gridName).jqGrid("getGridParam", "selarrrow");
        },
        GetRecords: function (gridName) {
            // 获得记录数 //
            return $("#" + gridName).jqGrid("getGridParam", "records");
        },
        GetRowData: function (gridName, rowIdx) {
            // 获得选中行的记录 //
            return $("#" + gridName).jqGrid("getRowData", rowIdx);
        },
        GetRowArrData: function (gridName, rowAIdx) {
            // 获得选中行数组的记录 //
            var cG = $("#" + gridName);
            var theResult = [];
            var iLen = rowAIdx.length;
            var i = 0;
            var cI = null;
            for (i = 0; i < iLen; ++i) {
                cI = cG.jqGrid('getRowData', rowAIdx[i]);
                theResult.push(cI);
            }

            return theResult;
        },
        ReloadByName: function (gridName) {
            // 重新加载 //
            var cG = $("#" + gridName);
            cG.trigger("reloadGrid");
        },
        Reload: function (pI) {
            // 重新加载 //
            var cG = $("#" + pI.TableId);
            cG.trigger("reloadGrid");
        },
        DeleteSelected: function (pI) {
            // 删除选中的 //
            var vIds = JqGridFn.GetSelRowArrayValue(pI, null);
            if (vIds == null) {
                CF.DlgFn.AlertText(pI, "请选择要删除的行");
                return;
            }

            swal({
                title: "确定删除选中的记录?",
                type: "warning",
                showCancelButton: true,
                confirmButtonColor: "#DD6B55",
                confirmButtonText: "删除",
                cancelButtonText: "取消",
                closeOnConfirm: false
            }, function () {
                var ajaxUrl = CF.AppFn.GetDeleteSelectedAjaxUrl(pI, vIds);

                $.ajax({
                    cache: false,
                    async: true,
                    url: ajaxUrl,
                    dataType: 'json',
                    type: 'post',
                    success: function (data) {
                        swal({
                            title: "删除成功",
                            type: "success"
                        },
                        function () {
                            CF.JqGridFn.Reload(pI);
                        })
                    },
                    error: function (result, b) {
                        var eT = "发现系统错误,错误码:" + result.status;
                        swal({
                            title: "操作失败",
                            text: eT,
                            type: "error"
                        });
                    }
                });
            });
        },
        GetSearchData:function (pI,isAdv){
            // 获得搜索条件 //
            var eA = $("[ek='1']");

            if(eA == null)
                return "";

            var eALen = eA.length;

            if (eALen == 0)
                return "";

            var i = 0;
            var eI = null;
            var eId = null;
            var eCtrl = null;
            var eName = null;
            var eValue = null;
            var theResult = "";

            // 搜索 //
            var attributeName = ECN.IsCtrlSearch;


            if (isAdv) {
                // 高级搜索 //
                attributeName = ECN.IsCtrlAdvSearch;
            }

            var attrSearchIsTrim = ECN.SearchIsTrim;

            var attributeValue = false;
            var linkChar = "&";

            for (i = 0; i < eALen; ++i) {
                eI = eA[i];
                eId = eI.id;
                eCtrl = $("#" + eId);

                if (eCtrl == null)
                    continue;

                attributeValue = AppFn.GetAttributeBooleanValue(eCtrl, attributeName, false);

                if (!attributeValue)
                    continue;

                eValue = eCtrl.val();

                if (eValue == "")
                    continue;

                // 是否过滤空格 //
                attributeValue = AppFn.GetAttributeBooleanValue(eCtrl, attrSearchIsTrim, true);

                if (attributeValue) {
                    eValue = $.trim(eValue);
                }

                // 过滤空格后值为空 //
                if (eValue == "")
                    continue;

                theResult += linkChar + eId + "=" + escape(eValue);
            }

            return theResult; 
        },
        Search: function (pI, isAdv) {
            // 搜索 //
            var jqG = $("#" + pI.TableId);

            // 没有获得JqGrid //
            if (jqG == null)
                return;

            var pD = JqGridFn.GetSearchData(pI, isAdv);

            var ajaxUrl = pI.ListAjaxUrl + pD;

            jqG.jqGrid("setGridParam", {
                url: ajaxUrl,
                page: 0
            }).trigger("reloadGrid");
        },
        ShowSeqUpDownClick: function (pI, rIdx, isUp) {
            var oId = JqGridFn.GetRowDataByName(pI, rIdx, null);
            var cId = JqGridFn.GetRowUpDownDataByName(pI, rIdx, isUp, null);

            if (oId == null || cId == null)
                return;

            // 校验唯一 //
            var ajaxUrl = "";

            ajaxUrl += pI.SwapShowSeqUrl; 

            ajaxUrl += "&oId" + "=" + escape(oId);
            ajaxUrl += "&cId" + "=" + escape(cId);

            var theResult = 1;

            $.ajax({
                cache: false,
                async: false,
                url: ajaxUrl,
                dataType: "json",
                type: "post",
                success: function (data) {
                    theResult = data;

                    if (theResult == "1") {
                        JqGridFn.Reload(pI);
                    }
                },
                error: function (result, b) {
                    var eT = "发现系统错误,错误码:" + result.status;
                    swal({
                        title: "操作失败",
                        text: eT,
                        type: "error"
                    });

                    theResult = 3;
                }
            });
        },
        ShowSeqUpDownButtonCreate: function (pI) {

            // 创建显示顺序操作按钮 //
            var jqG = $("#" + pI.TableId);

            if (jqG == null)
                return;

            var ids = jqG.jqGrid("getDataIDs");
            var idsLen = ids.length;

            var nId = pI.NameId;
            var vId = null;

            for (var i = 0; i < idsLen; ++i) {
                vId = ids[i];

                var ctrlUpCode = "<a href=\"#\" style=\"color:#f60\" onclick=\"CF.EkFn.ShowSeqUpDown(" + nId + ", " + vId + ", 1);\">↑</a>";
                var ctrlDownCode = "<a href=\"#\" style=\"color:#f60\" onclick=\"CF.EkFn.ShowSeqUpDown(" + nId + ", " + vId + ", 0);\">↓</a>";

                if (i == 0)
                    ctrlUpCode = "-";

                if (i == idsLen - 1)
                    ctrlDownCode = "-";

                jqG.jqGrid('setRowData', ids[i], { _CtrlUp: ctrlUpCode, _CtrlDown: ctrlDownCode });
            }
        }
    };
    window["CF"]["JqGridFn"] = JqGridFn;


    // jQuery相关的方法 //
    var JqFn = {
        attrGet: function (ctrlId, attrName) {
            // 获得Attribute的值 //
            var theResult = $("#"+ctrlId).attr(attrName);

            return theResult;
        },
        attrVGet: function (ctrl, attrName) {
            // 获得Attribute的值 //
            var theResult = ctrl.attr(attrName);

            return theResult;
        },
        valGet: function (ctrlId) {
            // 设置或返回表单字段的值 //
            var theResult = $("#" + ctrlId).val();

            return theResult;
        },
        valVGet: function (ctrl) {
            // 设置或返回表单字段的值 //
            var theResult = ctrl.val();

            return theResult;
        },
        valSet: function (ctrlId, vName) {
            // 设置或返回表单字段的值 //
            $("#" + ctrlId).val(vName); 
        },
        valVSet: function (ctrl, vName) {
            // 设置或返回表单字段的值 //
            ctrl.val(vName);
        },
        Trim: function (str) {
            // trim空格 //
            if (str == null)
                return "";

            return $.trim(str);
        }
    };

    window["CF"]["JqFn"] = JqFn;

    // 基于jQuery联动实现的控件校验方法 //
    var JqValidFn = {        
        CheckItem: function (theCtrl) {
            // 校验
            if (theCtrl == null)
                return true;

            var theValue = StrFn.Trim(theCtrl.value);

            // 非空返回ok //
            if (theValue != "")
                return true;

            DlgFn.AlertError(null, "请输入内容");

            theCtrl.focus();
            theCtrl.select();

            return false;
        },
        CheckById: function (ctrlId) {
            var theCtrl = document.getElementById(ctrlId);

            return JqValidFn.CheckItem(theCtrl);
        },
        GetEmptyRequiredMessage: function (vItem) {
            // 获得空白的校验提示 //
            if (vItem == null)
                return "";

            if (vItem.EmptyRequiredMessage != null && vItem.EmptyRequiredMessage != "") {
                // 为空校验提示 //
                return vItem.EmptyRequiredMessage;
            }

            if (vItem.LabelName == null || vItem.LabelName == "")
                return "请选择或输入内容";
            else
                return "请选择或输入" + vItem.LabelName;
        },
        GetErrorRequiredMessage: function (vItem) {
            // 获得错误的校验提示 //
            if (vItem == null)
                return "";

            if (vItem.ErrorRequiredMessage != null && vItem.ErrorRequiredMessage != "") {
                // 为空校验提示 //
                return vItem.ErrorRequiredMessage;
            }

            if (vItem.LabelName == null || vItem.LabelName == "")
                return "请选择或输入合理的内容";
            else
                return "请选择或输入合理的" + vItem.LabelName;
        },
        RemoteCheckUnique: function (pI, vItem, theValue) {
            // 校验唯一 //
            var ajaxUrl = "";
            
            ajaxUrl += pI.RemoteCheckUniqueUrl + "&" + pI.PkName + "=" + escape(pI.PkId);
            
            ajaxUrl += "&dcName=" + escape(vItem.DataColumnName);
            ajaxUrl += "&dcValue=" + escape(theValue);

            var theResult = 1;

            $.ajax({
                cache: false,
                async: false,
                url: ajaxUrl,
                dataType: 'json',
                type: 'post',
                success: function (data) {
                    theResult = data;
                },
                error: function (result, b) {
                    var eT = "发现系统错误,错误码:" + result.status;
                    swal({
                        title: "操作失败",
                        text: eT,
                        type: "error"
                    });

                    theResult = 3;
                }
            });

            return theResult;
        },
        RemoteCheckShowSeq: function (pI, vItem, theValue) {
            // 校验显示顺序 //
            var ajaxUrl = "";
            
            ajaxUrl += pI.RemoteCheckShowSeqUrl + "&" + pI.PkName + "=" + escape(pI.PkId);
            
            ajaxUrl += "&dcName=" + escape(vItem.DataColumnName);
            ajaxUrl += "&dcValue=" + escape(theValue);

            var theResult = 1;

            $.ajax({
                cache: false,
                async: false,
                url: ajaxUrl,
                dataType: 'json',
                type: 'post',
                success: function (data) {
                    theResult = data;
                },
                error: function (result, b) {
                    var eT = "发现系统错误,错误码:" + result.status;
                    swal({
                        title: "操作失败",
                        text: eT,
                        type: "error"
                    });

                    theResult = 3;
                }
            });

            return theResult;
        },        
        CheckCtrl: function (pI, vItem) {
            // 校验控件 //
            if (vItem == null)
                return true;

            // 不需要校验 //
            if (!vItem.IsEnabled)
                return true;

            // 获得控件Id //
            var theCtrl = $("#" + vItem.CtrlId);

            if (theCtrl == null)
                return true;

            // 获得值 //
            var theValue = theCtrl.val();

            if (theValue != "" && vItem.IsTrim) {
                // 需要过滤空格 //
                theValue = $.trim(theValue);
            }

            var tipText = null;

            if (theValue == "") {
                if (!vItem.IsCheckEmpty) {
                    // 不校验空格 //
                    return true;
                }

                // 获得空白的校验提示 //
                tipText = JqValidFn.GetEmptyRequiredMessage(vItem);

                DlgFn.AlertCtrlError(pI, tipText, vItem.FocusCtrlId, vItem.SelectCtrlId);

                return false;
            }

            var checkResult = true;
            var checkType = vItem.CheckMethod;

            checkType = checkType.toLowerCase();
            var cR = 0;
            switch (checkType) {
                case "isfloat":
                    checkResult = ValidFn.IsFloat(theValue);
                    break;
                case "isint":
                    // 是否整型值 //
                    checkResult = ValidFn.IsTheInt(theValue);
                    break;
                case "zip":
                    checkResult = ValidFn.IsValidZip(theValue);
                    break;
                case "tel":
                    checkResult = ValidFn.IsValidTel(theValue);
                    break;
                case "email":
                    checkResult = ValidFn.IsValidEmail(theValue);
                    break;
                case "mobile":
                    checkResult = ValidFn.IsValidMobile(theValue);
                    break;
                case "qq":
                    checkResult = ValidFn.IsValidQQ(theValue);
                    break;
                case "remotecheckunique":
                    // 校验唯一性 //
                    cR = JqValidFn.RemoteCheckUnique(pI, vItem, theValue);
                    if (cR == 3)
                        return false;

                    checkResult = (cR == "1");
                    break;
                case "remotecheckshowseq":
                    // 校验显示顺序 //

                    // 判断是否是整型值 //
                    checkResult = ValidFn.IsTheInt(theValue);

                    if (checkResult) {
                        cR = JqValidFn.RemoteCheckShowSeq(pI, vItem, theValue);
                        if (cR == 3)
                            return false;

                        checkResult = (cR == "1");
                    }
                    break;


                case "":
                    break;
            }

            if (checkResult)
                return true;

            // 获得错误的校验提示 //
            tipText = JqValidFn.GetErrorRequiredMessage(vItem);

            DlgFn.AlertCtrlError(pI, tipText, vItem.FocusCtrlId, vItem.SelectCtrlId);

            return false; 
        }
    };

    window["CF"]["JqValidFn"] = JqValidFn;


    // 捆绑的常用逻辑方法 //
    var EkFn = {
        ToNew: function (pI) {
            // 转去新增 //
            AppFn.ToNew(pI);
        },
        ToEdit: function (pI) {
            // 转去编辑 //
            JqGridFn.ToEdit(pI);
        },
        ToView: function (pI) {
            // 转去查看 //
            JqGridFn.ToView(pI);
        },
        DeleteSelected: function (pI) {
            // 删除选中的 //
            JqGridFn.DeleteSelected(pI);
        },
        Search: function (pI,isAdv) {
            // 搜索 和 高级搜素 //
            JqGridFn.Search(pI, isAdv);
        },
        Save: function (pI) {
            // 保存操作 //
            AppFn.DetailSaveClick(pI);

        },
        ToReturnList: function (pI) {
            // 返回列表 //
            CF.AppFn.ToReturnList(pI);
        },
        ShowSeqUpDown: function (pI, rIdx, isUp) {
            // 显示顺序交换 //
            CF.JqGridFn.ShowSeqUpDownClick(pI, rIdx, isUp);
        },
        ShowSeqUpDownButtonCreate: function (pI) {
            CF.JqGridFn.ShowSeqUpDownButtonCreate(pI);
        }
    };

    window["CF"]["EkFn"] = EkFn;

    // 相关的逻辑方法 //
    var HnaFn = {
        Succ: function (sTip, toUrl) {
            // 成功的跳转提示 //


            // 转去新增 //
            AppFn.ToNew(pI);
        },
        ToEdit: function (pI) {
            // 转去编辑 //
            JqGridFn.ToEdit(pI);
        } 
    };

    window["CF"]["HnaFn"] = HnaFn;

    /************End******************/
})();


标签:CommonFn.js备存 

上一条:

下一条:


 

相关评论

评论加载中……
 

发表评论

类型:
内容:
  (Alt+Enter)
 
  ┈全部┈  
 
(显示默认分类)