常用JS工具类

基础的一些校验功能都有,但是如果需要进行校验需要后端联合校验,前端校验只是为了减轻后端压力。否则重写函数return true,所有校验皆为无效!!! 

/**
 * 别天天想着重写函数跳过判断
 * 后端也有校验,别浪费时间了
 * @param json
 */

// 配置页面
function setPageCfg(json) {
    nicePage.setCfg({
        table: 'table',
        bar: 'pageBar',
        limit: 10,
        color: '#1E9FFF',
        layout: ['count', 'prev', 'page', 'next', 'limit', 'skip']
    });
    layui.use("laypage", function () {
        var a = layui.laypage;
        a.render({
            elem: nicePage.bar,
            limit: nicePage.limit,
            theme: nicePage.color,
            count: json.length,
            layout: nicePage.layout,
            jump: function (b) {
                document.getElementById(nicePage.table).innerHTML = function () {
                    var c = [nicePage.returnHtml(nameList, widthList)],
                        d = nicePage.returnList(json).concat().splice(b.curr * b.limit - b.limit, b.limit);
                    layui.each(d, function (e, g) {
                        var f = nicePage.returnTable(g);
                        c.push(f)
                    });
                    c.push(" </tbody></table></br>");
                    return c.join("")
                }()

            }
        })
    })
}

// 时间格式化
function dateFormat(fmt, date) {
    let ret;
    const opt = {
        "Y+": date.getFullYear().toString(),        // 年
        "m+": (date.getMonth() + 1).toString(),     // 月
        "d+": date.getDate().toString(),            // 日
        "H+": date.getHours().toString(),           // 时
        "M+": date.getMinutes().toString(),         // 分
        "S+": date.getSeconds().toString()          // 秒
        // 有其他格式化字符需求可以继续添加,必须转化成字符串
    };
    for (let k in opt) {
        ret = new RegExp("(" + k + ")").exec(fmt);
        if (ret) {
            fmt = fmt.replace(ret[1], (ret[1].length == 1) ? (opt[k]) : (opt[k].padStart(ret[1].length, "0")))
        }
        ;
    }
    ;
    return fmt;
}

/**
 * ajax post提交
 * @param ajaxdata 提交数据
 * @param ajaxurl 提交路径
 * @param successcallback 成功回调
 * @param errorcallback 失败回调
 */
function ajaxPost(ajaxdata, ajaxurl, successcallback, errorcallback) {
    $.ajax({
        cache: true,
        type: "post",
        dataType: "json",
        url: ajaxurl,
        data: ajaxdata,
        async: true,
        success: function (data) {
            if ($.isFunction(successcallback)) {
                successcallback.call(this, data);
            }
        },
        error: function (data) {
            if ($.isFunction(errorcallback)) {
                errorcallback.call(this, data);
            }
        }
    });
}

/**
 * ajax get
 * @param ajaxdata 提交数据
 * @param ajaxurl 提交路径
 * @param successcallback 成功回调
 * @param errorcallback 失败回调
 */
function ajaxGET(ajaxdata, ajaxurl, successcallback, errorcallback) {
    $.ajax({
        cache: true,
        type: "get",
        dataType: "json",
        url: ajaxurl,
        data: ajaxdata,
        async: true,
        success: function (data) {
            if ($.isFunction(successcallback)) {
                successcallback.call(this, data);
            }
        },
        error: function (data) {
            if ($.isFunction(errorcallback)) {
                errorcallback.call(this, data);
            }
        }
    });
}

/**
 * processData设置为false。因为data值是FormData对象,不需要对数据做处理。
 * <form>标签添加enctype="multipart/form-data"属性。
 * cache设置为false,上传文件不需要缓存。
 * contentType设置为false。因为是由<form>表单构造的FormData对象,且已经声明了属性enctype="multipart/form-data",所以这里设置为false。
 *
 * ajax FormData post提交
 */
function ajaxFormDataPost(ajaxdata, ajaxurl, successcallback, errorcallback) {
    $.ajax({
        type: "post",
        url: ajaxurl,
        data: ajaxdata,
        async: true,
        dataType: "json",
        contentType: false,
        processData: false,
        success: function (data) {
            if ($.isFunction(successcallback)) {
                successcallback.call(this, data);
            }
        },
        error: function (data) {
            if ($.isFunction(errorcallback)) {
                errorcallback.call(this, data);
            }
        }
    });
}

/**
 * ajax post提交 以contentType: "application/json"方式,后端使用@RequestBody 接收参数
 * @param ajaxdata 提交数据
 * @param ajaxurl 提交路径
 * @param successcallback 成功回调
 * @param errorcallback 失败回调
 */
function ajaxPostJSON(ajaxdata, ajaxurl, successcallback, errorcallback) {
    $.ajax({
        cache: true,
        type: "post",
        contentType: "application/json",//"application/json;charset=UTF-8"
        dataType: "json",
        url: ajaxurl,
        data: ajaxdata,
        async: true,
        success: function (data) {
            if ($.isFunction(successcallback)) {
                successcallback.call(this, data);
            }
        },
        error: function (data) {
            if ($.isFunction(errorcallback)) {
                errorcallback.call(this, data);
            }
        }
    });
}


/**
 * ajax post提交 (同步)
 * @param ajaxdata 提交数据
 * @param ajaxurl 提交路径
 * @param successcallback 成功回调
 * @param errorcallback 失败回调
 */
function ajaxSyncPost(ajaxdata, ajaxurl, successcallback, errorcallback) {
    $.ajax({
        cache: true,
        type: "post",
        dataType: "json",
        url: ajaxurl,
        data: ajaxdata,
        async: false,
        success: function (data) {
            if ($.isFunction(successcallback)) {
                successcallback.call(this, data);
            }
        },
        error: function (data) {
            if ($.isFunction(errorcallback)) {
                errorcallback.call(this, data);
            }
        }
    });
}

$.ajaxSetup({
    //设置ajax请求结束后的执行动作
    complete: function (XMLHttpRequest, textStatus) {
        // 通过XMLHttpRequest取得响应头,REDIRECT
        var redirect = XMLHttpRequest.getResponseHeader("REDIRECT");//若HEADER中含有REDIRECT说明后端想重定向
        if (redirect == "REDIRECT") {
            var win = window;
            while (win != win.top) {
                win = win.top;
            }
            //将后端重定向的地址取出来,使用win.location.href去实现重定向的要求
            win.location.href = XMLHttpRequest.getResponseHeader('CONTENTPATH');
        }
    }
});

/**
 * 通过正则表达式提取数字/非数字
 * @param str 字符串
 * @param NaN ture非数字,else 数字
 * @returns {XML|void|string|*}
 */
function extractDigits(str, NaN) {
    if (NaN) {
        return str.replace(/[0-9.-]/ig, "");
    }
    return parseInt(str.replace(/[^0-9.-]/ig, ""));
}

/**
 * @description base64编码方法
 * @param val 需要编码的字符串
 * @return 返回编码好的base64字符串
 *    中文进行编码时,需要使用base64Encode(encodeURIComponent(a))
 */
function base64Encode(val) {
    var base64hash = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
    val = encodeURIComponent(val);
    //把字符串转换为字符数组
    var strArr = val.split('');

    //装入结果的数组
    var result = [];
    //每个字符的ascii码
    var asciiCode;
    //上一个字符的ascii码
    var prevAsciiCode;

    var mod;
    //未填充之前的数组与3的模
    var preMod = strArr.length % 3;

    //使字符数组组成三个一组
    if (preMod == 1) {
        strArr.push(null);
        strArr.push(null);
    }
    if (preMod == 2) strArr.push(null);
    //遍历整个数组,寻找每个字符的ascii码
    for (var index in strArr) {
        if (!strArr[index]) {
            asciiCode = 0;
        } else {
            asciiCode = strArr[index].charCodeAt();
        }
        //位于一组当中的第几个字符
        mod = index % 3;
        switch (mod) {
            case 0:
                //往右移2位
                result.push(base64hash[asciiCode >> 2]);
                break;
            case 1:
                //上一个ascii码往左移4位与现在的ascii码往右移四位做或操作
                result.push(base64hash[(prevAsciiCode & 3) << 4 | asciiCode >> 4]);
                break;
            case 2:
                //假设当前组的ascii为:01000111,00000011,00000000
                //2表示当前索引位于第三个,第二个ascii码和15相与,获得低四位的值,右移两位后再从第三个ascii获取高二位作为新6位数的低二位
                result.push(base64hash[(prevAsciiCode & 15) << 2 | asciiCode >> 6]);
                //与2的6次方减1相与,获得低6位的值
                result.push(base64hash[asciiCode & 63]);
                break
        }

        prevAsciiCode = asciiCode
    }

    //处理异常
    if (preMod == 1) {
        result.splice(result.length - 2, 2);
        result.push('==');
    } else if (preMod == 2) {
        result.pop();
        result.push('=');
    }

    return result.join('');
}

/**
 * Base64译码
 * @param val base编码后的字符串
 * @returns {string} 原字符串
 */
function base64Decode(val) {
    var base64hash = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';

    //把字符串转换为字符数组
    var strArr = val.split('');

    //装入结果的数组
    var result = [];
    var preCode;
    var code;
    //余数,1-3
    var n;
    for (var i in strArr) {
        n = i % 4;
        code = base64hash.indexOf(strArr[i]);
        switch (n) {
            case 0:
                preCode = base64hash.indexOf(strArr[i]);
                break;
            case 1:
                result.push(String.fromCharCode(preCode << 2 | (code & 48) >> 4));
                break;
            case 2:
                result.push(String.fromCharCode((preCode & 15) << 4 | (code & 60) >> 2));
                break;
            case 3:
                result.push(String.fromCharCode(((preCode & 3) << 6) | code));
                break;

        }
        preCode = code;

    }

    return decodeURIComponent(result.join(''));
}

/**
 * 通过正则来判断是否是手机号,1开头 34578第2位,结尾为0-9的9个整数
 * @param phoneInput
 * @returns {boolean}
 */
function isPhoneAvailable(phoneInput) {
    var myreg = /^[1][3,4,5,7,8][0-9]{9}$/;
    if (!myreg.test(phoneInput)) {
        return false;
    } else {
        return true;
    }
}

/**
 * 邮箱正则
 * @param emailInput
 * @returns {boolean}
 */
function isEmailAvailable(emailInput) {
    var myreg = /^([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+@([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+\.[a-zA-Z]{2,3}$/;
    if (!myreg.test(emailInput)) {
        return false;
    } else {
        return true;
    }
}

function StringIsEmpty(str) {
    if (result == null || result == "" || result == 'undefined')
        return true;
    else
        return false

}

function IsURL(strUrl) {
    var regular = /^\b(((https?|ftp):\/\/)?[-a-z0-9]+(\.[-a-z0-9]+)*\.(?:com|edu|gov|int|mil|net|org|biz|info|name|museum|asia|coop|aero|[a-z][a-z]|((25[0-5])|(2[0-4]\d)|(1\d\d)|([1-9]\d)|\d))\b(\/[-a-z0-9_:\@&?=+,.!\/~%\$]*)?)$/i
    if (regular.test(strUrl)) {
        return true;
    }
    else {
        return false;
    }
}



 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值