Alert.js 5.08 KB
/**
 * founder : zzf
 * Creation time :  2015/3/16
 */

define(function( require, exports, module ) {
    require( 'fancybox' );

    var Alert = (function(arges){//消息提示框
        var config = {
            type : "",//确定显示主题
            headTitle : "",//头部显示文字
            headColse : true,//是否显示头部关闭按钮 默认值:ture 显示
            tipText : "",//提示文字显示
            contText : "",//内容显示文字 可以是url/txt/class
            contClass : "#alert-view",//内容显示区域class
            btnsType : 0,//按钮类型 默认值:0  0为一个按钮
            btns : ["确认", "取消"],//按钮文字显示
            succeedFun : function(){},
            cancelFun : function(){},
            isremove : false,
            OverlayClick : false
        };
        var methods = {
            init : function(){
                $.extend(config, arges);
                this.foundUrl();
                $(".popup-btn").fancybox({
                    padding : 30,
                    afterClose : function(){
                        if(config.isremove){
                            methods.remove();
                        }
                    },
                    afterShow : function(){
                        if(config.headColse){
                            $(".fancybox-item").hide();
                        }
                        $(".fancybox-overlay-fixed").click(function(){
                            return false;
                        });
                    },
                    helpers : {
                        overlay : {
                            closeClick : config.OverlayClick
                        }
                    }
                }).trigger("click");
                this.events();
            },
            foundUrl : function(){
                var view = '<a href="'+config.contClass+'" class="popup-btn" style="display:none;">popup btn</a>';
                $("body").append(view);
                this.foundView();
            },
            foundView : function(){
                var view =  '<div class="cancel-ensure" id="alert-view"><div class="head">'+config.headTitle+'</div>'
                           +'<div class="content"><div class="tip '+config.type+'"><span class="alert-icon"></span>'
                           +'<span class="title">'+config.tipText+'</span></div>'
                           +'<div class="text">'+config.contText+'</div>'
                           +'</div><div class="btns"><button class="submitBtn alert-save">确认</button>'
                           +'<button class="submitBtn grayBtn alert-close" style="display:none;">取消</button></div></div>';
                $("body").append(view);
                if(config.headTitle == ""){
                    $("#alert-view .head").hide();
                }
                if(config.tipText == ""){
                    $("#alert-view .tip").hide();
                }
                if(config.contText == ""){
                    $("#alert-view .text").hide();
                }else{
                    $("#alert-view .tip").css("padding", "0px");
                }
                $("#alert-view .btns button").each(function(i, elem){
                    if($("#alert-view .btns button").size() > 2){
                        if(i >= 2){
                            $(elem).html(config.btns[i-2]);
                        }
                    }else{
                        $(elem).html(config.btns[i]);
                    }
                });
                if(config.btnsType){
                    $("#alert-view .grayBtn").show();
                }else{
                    $("#alert-view .alert-save").addClass("a-save-show");
                }
                config.isremove = true;
            },
            events : function(){
                $("#alert-view .alert-save").click(function(){
                    config.succeedFun();
                    $(".fancybox-close").trigger("click");
                });
                $("#alert-view .alert-close").click(function(){
                    config.cancelFun();
                    $(".fancybox-close").trigger("click");
                });
            },
            remove : function(){
                $(".popup-btn").remove();
                $("#alert-view").remove();
                $(".fancybox-placeholder").remove();
                config.isremove = false;
            }
        };

        this.get = function(key){
            if(! key){return false;}
            for(i in config){
                if(i === key){
                    return config[i];
                }
            }
            return false;
        };

        this.set = function(Object){
            if("object" !== typeof(Object)){return false;}
            var isSucceed = false;
            for(i in config){
                for(k in Object){
                    if(i === k){
                        config[i] = Object[k];
                        isSucceed = true;
                    }
                }
            }
            return isSucceed;
        };
        methods.init();
    });

    return Alert;
});