JS工具包(获取时间、URL正则取参等),使用的RequireJS封装一个工具包模块

文件源码如下:

/* 声明一个工具包模块 */
define({

    //提供接口,统一主域名
    getDomainName() { //ES6的对象字面量的函数增强写法
        return "http://127.0.0.1:8080"
    },

    //判断是否按下回车
    isPressEnter: function() {
        return event.keyCode === 13;
    },

    //判断字符串是否为空
    isEmpty(str) {
        //typeof str == "undefined",判断str是否定义
        return typeof str == "undefined" || str == null || str === "";
    },

    //基于layer的信息校验(input)
    verifyLayer(domName, regExp, msg, $, layer) {
        let dom = $("input[name=" + domName + "]");
        if(this.isEmpty(dom.val())) {
            layer.msg("必填项项不能为空!", {
                icon: 5
                , anim: 6 //抖动
                , time: 1000 //1秒关闭(如果不配置,默认是3秒)
            }, function () {
                dom.val("");
                dom.focus();
            });
            return true;//如果数据不合法,返回true
        }
        if (!regExp.test(dom.val())) {
            layer.msg(msg, {
                icon: 5
                , anim: 6 //抖动
                , time: 1000 //1秒关闭(如果不配置,默认是3秒)
            }, function () {
                dom.val("");
                dom.focus();
            });
            return true;
        }
        return false;
    },

    //基于layer的信息校验,如果为空则通过校验(input)
    verifyLayerWhetherNull(domName, regExp, msg, $, layer) {
        let dom = $("input[name=" + domName + "]");
        if(this.isEmpty(dom.val())) return false;
        if (!regExp.test(dom.val())) {
            layer.msg(msg, {
                icon: 5
                , anim: 6 //抖动
                , time: 1000 //3秒关闭(如果不配置,默认是3秒)
            }, function () {
                dom.val("");
                dom.focus();
            });
            return true;
        }
        return false;
    },

    //基于layer的抖动弹窗
    layerAnim6(msg, ms, layer) {
        layer.msg(msg, {
            anim: 6, //抖动
            time: ms //1秒关闭(如果不配置,默认是3秒)
        })
    },

    //判断日期是否格式化输入yyyy-MM-dd
    isFormatDate(str) {
        const format = /^(19|20)[\d]{2}-(0\d|1[0-2])-([012]\d|3[01])$/;
        return format.test(str);
    },

    //判断手机号合法性
    isPhoneNumber(str) {
        const phone = /^1[3-9]\d{9}$/;
        return phone.test(str);
    },

    //判断电子邮件合法性
    isEmail(str) {
        const email = /^[a-zA-Z\d](\w|-|\+)+@(qq|163|126|yeah|gmail|outlook|hotmail|live|aliyun)\.(com|net)$/;
        return email.test(str);
    },

    //判断密码合法性
    isPassword(str) {
        const pswd = /^[\S]{6,16}$/;
        return pswd.test(str);
    },

    //获取当前URL里?携带的参数(不含特殊参数如携带=)
    /*getUrlParam: function (name) {
        // 取得url中?后面的字符
        let query = window.location.search.substring(1);
        // 把参数按&拆分成数组
        let param_arr = query.split("&");
        for (let i = 0; i < param_arr.length; i++) {
            let pair = param_arr[i].split("=");
            if (pair[0] === name) {
                return pair[1];
            }
        }
        return false;
    },*/

    //通过正则表达式获取URL参数,name为参数名
    getUrlParam(name) {
        let pattern = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
        let result = window.location.search.substr(1).match(pattern);//得到?后面的参数,并匹配正则
        if (result != null)
            return unescape(result[2]);
        return null;
    },

    //替换URL参数中的特殊字符(+"'/)
    replaceUrlParam(url) {
        return escape(url).replace(/\+/g, '%2B').replace(/\"/g, '%22').replace(
            /\'/g, '%27').replace(/\//g, '%2F');
    },
    
	//获取当前时间
    getFormatDate(formatString) {
        Date.prototype.format = function (format) {
            /*
             * eg:format="YYYY-MM-dd hh:mm:ss";

             */
            let o = {
                "M+": this.getMonth() + 1, // month
                "d+": this.getDate(), // day
                "h+": this.getHours(), // hour
                "m+": this.getMinutes(), // minute
                "s+": this.getSeconds(), // second
                "q+": Math.floor((this.getMonth() + 3) / 3), // quarter
                "S": this.getMilliseconds() // millisecond
            }
            if (/(y+)/.test(format)) {
                format = format.replace(RegExp.$1, (this.getFullYear() + "")
                    .substr(4 - RegExp.$1.length));
            }
            for (var k in o) {
                if (new RegExp("(" + k + ")").test(format)) {
                    format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k]
                        : ("00" + o[k]).substr(("" + o[k]).length));
                }
            }
            return format;
        }
        // let startTime = new Date().format("yyyy-MM-dd 00:00:00");
        // let endTime = new Date().format("yyyy-MM-dd hh:mm:ss");
        return new Date().format(formatString);
    }
});

使用示例如下:

require.config({
    baseUrl: 'js',
    paths: {
        utils: 'utils/utils',
        layui: '../layui/layui' //layui.js-模块化方式, layui.all.js-非模块化方式
    },
    shim: {
        'layui': { //layui不遵循于AMD规范
            exports: 'layui'
        }
    }
});

require(['layui', 'utils'], function (layui, utils) {
	//获取主域名(http://127.0.0.1:8080)
	utils.getDomainName();
	//判断是否按下回车
	if(utils.isPressEnter()) {
		//按下回车
	}
	//字符串判空
	if(utils.isEmpty()) {
		//字符串如果为空
	}
	//判断手机号合法性
	if(!utils.isPhoneNumber()) {
		//如果手机号不合法
	}
	//获取通过URL传参的值(http://localhost:8080/xxx?a=1,获取a的值)
	utils.getUrlParam("a");
	//替换URL参数中的特殊字符
	let url = "http://localhost:8080/xxx?a=1";
	utils.replaceUrlParam(url);
	//获取当前时间(2020-01-01)
	utils.getFormatDate("yyyy-MM-dd");
	
	//含layer的JS方法示例
    layui.use(['form', 'layer'], function () {
        const layer = layui.layer
            , form = layui.form
            , $ = layui.$;

        let stuId = sessionStorage.getItem("roleId");
        if (utils.isEmpty(stuId)) {
            utils.layerAnim6('学生信息为空,操作出现异常!', 1000, layer);
            return false;
        }

        //监听信息提交
        form.on('submit(studentInfoSubmit)', function (data) {
            if (utils.verifyLayerWhetherNull("phone",
                /^1[3-9]\d{9}$/,
                '格式错误,电话号码支持13-19开头,且为11位',
                $, layer)) return false;
            if (utils.verifyLayerWhetherNull("qq",
                /^\d{6,11}$/,
                '格式错误,QQ号码应为6~11位',
                $, layer)) return false;
            if (utils.verifyLayer("name",
                /^[\u4e00-\u9fa5]{2,13}$/,
                '格式错误,暂只支持中文,姓名应为2~13个字符',
                $, layer)) return false;
            if (utils.verifyLayer("stuNumber",
                /^\w{4,12}$/,
                '格式错误,学号应为4~11位',
                $, layer)) return false;
            if (utils.verifyLayerWhetherNull("school",
                /^[\u4e00-\u9fa5\w]{1,55}$/,
                '格式错误,学校名称不超过55个字符',
                $, layer)) return false;
            if (utils.verifyLayerWhetherNull("department",
                /^[\u4e00-\u9fa5\w]{1,20}$/,
                '格式错误,院系名称不超过20个字符',
                $, layer)) return false;
            if (utils.verifyLayerWhetherNull("major",
                /^[\u4e00-\u9fa5\w]{1,20}$/,
                '格式错误,专业不超过20个字符',
                $, layer)) return false;
            if (utils.verifyLayerWhetherNull("enrollmentYear",
                /^(20)\d{2}$/,
                '格式错误,入学年份应以“20”开头,且为4位数字',
                $, layer)) return false;

            $.ajax({
                url: utils.getDomainName() + "/student/updateStudentInfo/",
                data: {
                    id: data.field['id'],
                    email: data.field['email'],
                    phone: data.field['phone'],
                    qq: data.field['qq'],
                    name: data.field['name'],
                    stuNumber: data.field['stuNumber'],
                    school: data.field['school'],
                    department: data.field['department'],
                    major: data.field['major'],
                    enrollmentYear: data.field['enrollmentYear']
                },
                dataType: 'json',// 服务器返回json格式数据
                type: 'put',
                timeout: 10000,// 超时时间设置为10秒
                success: function (json) {
                    if (json.success) {
                        layer.msg("修改成功!", {time: 2000}, function () {
                            window.parent.location.reload();//修改成功后刷新父界面
                        });
                    } else {
                        let message = json['msg'];
                        if (typeof message !== undefined && !utils.isEmpty(message) && message !== "") {
                            layer.msg(message, {time: 2000}, function () {
                                window.location.reload();
                            });
                        } else {
                            layer.msg('修改学生信息失败!', {time: 2000}, function () {
                                window.location.reload();
                            });
                        }
                    }
                },
                error: function (xhr, type, errorThrown) {
                    console.log(xhr);
                    console.log(type);
                    console.log(errorThrown);
                    layer.msg('服务器出错,修改学生信息失败!');
                }
            });//end ajax
            return false;//阻止表单跳转
        });
    });//end layui.use
});
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值