lxw
2020-07-11 9db52f2f2dd3665fe9da1ae5657e0167c3a34d40
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
// 定义confirm类
function Confirm() {
    this.confirm = $('.myconfirm');
    this.confirmMask = $('.confirm-mask');
    this.confirm.draggable();    // 可以拖动依赖jqueryui
    this.create();
}
 
// 创建Confirm
Confirm.prototype.create = function() {
    var confirmCont = $('<div class="myconfirm"></div>');    // confirm容器
    var confirmHd = $('<div class="confirm-header"></div>');    //confirm的头部
    var confirmContent = $('<div class="confirm-content"></div>'); // confirm的内容
    var confirmFo = $('<div class="confirm-footer"></div>');    // confirm的底部
    var confirmMask = $('<div class="confirm-mask"></div>');    // confirm的遮罩层
 
    /* 定义头部 */
    confirmHd.append($('<div class="title">系统提示</div>'));
    confirmHd.append($('<div class="close-confirm" onclick="myConfirm.hide();"></div>'));
 
    /* 定义底部 */
    confirmFo.append($('<div class="ipt"><input type="button" name="" value="确定" id="confirmEnsure"></div>'));
    confirmFo.append($('<div class="ipt"><input type="button" name="" value="取消" class="close" onclick="myConfirm.hide();"></div>'));
    confirmCont.append(confirmHd);
    confirmCont.append(confirmContent);
    confirmCont.append(confirmFo);
    $('body').append(confirmCont);
    $('body').append(confirmMask);
 
    this.confirm = $('.myconfirm');
    this.confirmMask = $('.confirm-mask');
    this.center();    // 自动执行居中操作
};
 
// 使Confirm处在屏幕的中间
Confirm.prototype.center = function() {
    var wid = this.confirm.width();
    var ht = this.confirm.height();
    var winHt = $(window).height();
    this.confirm.css({
        top: (winHt-300)/2+'px'
    });
    this.confirm.draggable();    // 依赖于jquery-ui.js
};
// 显示Confirm
Confirm.prototype.show = function(options) {
    var defaults = {
        title: '系统提示',
        content: '是否确认操作',
        type: 'confirm',
        class: 'none',
        value: '确定',
        timeout: 1500,
        enfun: '',
        enparams: [],
        enhide: true,
        setContent: false,
        fadeout: false
    };
    var obj = $.extend(true, {}, defaults, options || {});
    //console.info(obj.type);
    // 判断是否是confirm
    if(obj.type == 'alert') {
        this.confirm.find('.confirm-footer').hide();
    }else {
        this.confirm.find('.confirm-footer').show();
    }
    this.confirm.find('.confirm-header .title').text(obj.title);
    // 设置内容
    if(obj.setContent) {
        this.confirm.find('.confirm-content').addClass('confirm-content-noPadding');
    }else {
        this.confirm.find('.confirm-content').removeClass('confirm-content-noPadding');
    }
    
    this.confirm.find('.confirm-content').html(obj.content);
    if(typeof options.enfun == 'function') {
        $('#confirmEnsure').removeClass().addClass('no-class');
    }else {
        $('#confirmEnsure').removeClass().addClass(obj.class).val(obj.value);
    }
    // 显示confirm为淡入
    this.confirm.fadeIn();
    this.confirmMask.fadeIn();
    this.confirmMask.addClass('tmp-style');
    
    if(obj.fadeout && obj.type=='alert') {
        setTimeout(function() {
            this.hide();
        }.bind(this), obj.timeout);
    }
    
    // 添加确认事件
    this.ensure(obj);
    /*this.confirm.effect('slide',{},500);
    this.confirmMask.effect('slide',{},500);*/
};
// 隐藏Confirm
Confirm.prototype.hide = function() {
    // 隐藏confirm为淡出
    this.confirm.fadeOut();
    this.confirmMask.fadeOut();
    this.confirmMask.removeClass('tmp-style');
};
 
// 给确认按钮添加点击事件
Confirm.prototype.ensure = function(options) {
    //console.info(typeof options.enfun)
    // 存在确认事件
    if(typeof options.enfun == 'function') {
        var _this = this;
        // 给确认按钮添加事件
        $('#confirmEnsure').off('click.confirm.data-api').on('click.confirm.data-api', function() {
            if(options.enhide) {
                _this.hide();
            }
            options.enfun.apply({}, options.enparams);
        });
    }
};
 
var myConfirm = new Confirm();    // 实例化Confirm
// 屏幕可视高度改变Confirm的位置跟随改变
$(window).resize(function() {
    myConfirm.center();
});
$(function() {
    //console.info(myConfirm);
});