javascript - 条件不同,执行事件相同的情况 怎么封装?
高洛峰
高洛峰 2017-05-19 10:15:57
[JavaScript讨论组]
wzCommon.checkRequired = function (parent, errorStr, fn) {
    var required = parent.find('.required'),
        oNumber = parent.find('.number'),
        oTel = parent.find('.tel'),
        flag = true;
    if (required.length > 0) {
        required.each(function () {
            var getVal = $(this).val();
            if (getVal === '') {
                layer.msg(errorStr, {icon: 2});
                flag = false;
                return false;
            }
        });
    }
    if (oNumber.length > 0) {
        oNumber.each(function () {
            var verifyNumber = $(this).val();
            if (isNaN(verifyNumber)) {
                layer.msg(errorStr, {icon: 2});
                flag = false;
                return false;
            }
        });
    }
    
    if (oTel.length > 0) {
        oTel.each(function () {
            var getVal = $(this).val();
            debugger;
            if (!wzCommon.isPhoneNo(getVal)) {
                layer.msg(errorStr, {icon: 2});
                flag = false;
                return false;
            }
        });
    }
    
    if (flag) {
        fn();
    }
    return true;
};

我的思路是这样,但是不清除怎么写

wzCommon.checkStr = function (obj, errorStr, fn) {
    if (obj.length > 0) {
        obj.each(function () {
            var getVal = $(this).val();
            if (这里是不同条件) {
                layer.msg(errorStr, {icon: 2});
                flag = false;
                return false;
            }
        });
    }
    
    if (flag) {
        fn();
    }
    return true;
};
高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回复(2)
習慣沉默
// 既然你已经抽离出来, 只剩不同条件的判断, 那写一个检测器就好了啊.
var verifier = {
    common  : function(val) { return !!val },
    required: function(val) { return val==='' },
    number  : function(val) { return isNaN(num) },
    // ... 以此类推
};


// 这里你只需要处理一个 prop 参数, 这个参数你可以放到元素 data-prop 里, 也可以直接用类名, 很好处理
obj.each(function () {
    var getVal = $(this).val();
    // 假设你直接把 props 写在元素上
    var prop   = $(this).attr('data-prop') || 'common';
    if ( verifier[prop](getVal) ){
        layer.msg(errorStr, {icon: 2});
        flag = false;
        return false;
    }
});
阿神

required = parent.find('.required'),

    oNumber = parent.find('.number'),
    oTel = parent.find('.tel')
    
    
    这里做文章  再提取一个参数可以吗?

wzCommon.checkRequired = function (parent,el, errorStr, fn) {
    var el= parent.find('.'+el),
        flag = true;
    if (el.length > 0) {
        el.each(function () {
            var getVal = $(this).val();
            if (getVal === '') {
                layer.msg(errorStr, {icon: 2});
                flag = false;
                return false;
            }
        });
    }
    if (flag) {
        fn();
    }
    return true;
};
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号