jquery实现自定义弹出框

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<script src="../js/jquery-1.8.3.min.js" type="text/javascript"></script>
<script src="../js/bootstrap-typeahead.js" type="text/javascript"></script>
<link href="../css/bootstrap.min.css" rel="stylesheet"/>
<script src="../js/bootstrap.min.js" type="text/javascript"></script>
<script src="../js/bootstrap-select.js" type="text/javascript"></script>
<link href="../css/bootstrap-select.min.css" rel="stylesheet"/>

<script type="text/javascript">
    /*
     用途描述:自定义的消息提示框和消息确认框,采用jquery的闭包方法实现,但必须依赖
     与jQuery,否则没有效果。
     使用说明:
     alert框请调用:zdalert(title,top,width, message, function(ret))
     confirm框请调用:zdconfirm(title,top,width, message, function(ret))
     方法参数说明:
     title:弹出框的显示标题;
     top:弹出框位于当前窗体的高度,请填写整数值,使用的分数形式(_height - boxHeight) / top
     width:弹出框的宽度,请填写px值。
     message:弹出框显示的内容。
     function:回调函数,需要执行的内容方法,参数ret有一个,为ture和false值*/


    (function($) {
//声明闭包方法
        $.alerts = {
            alert: function(title,top,width, message, callback) {
                if( title == null ) title = 'Alert';
                $.alerts._show(title,top,width, message, null, 'alert', function() {
                    if( callback ) callback(result);
                });
            },

            confirm: function(title, top,width,message, callback) {
                if( title == null ) title = 'Confirm';
                $.alerts._show(title, top,width,message, null, 'confirm', function(result) {
                    if( callback ) callback(result);
                });
            },


            _show: function(title,top,width,msg, value, type, callback) {

                var _html = "";

                _html += '<div id="mb_box"></div><div id="mb_con"><span id="mb_tit">' + title + '</span>';
                _html += '<div id="mb_msg">' + msg + '</div><div id="mb_btnbox">';
                if (type == "alert") {
                    _html += '<input id="mb_btn_ok" type="button" value="确定" />';
                }
                if (type == "confirm") {
                    _html += '<input id="mb_btn_ok" type="button" value="确定" />';
                    _html += '<input id="mb_btn_no" type="button" value="取消" />';
                }
                _html += '</div></div>';

                //必须先将_html添加到body,再设置Css样式
                $("body").append(_html); GenerateCss(top,width);
                //判断是确认框还是提示框
                switch( type ) {
                    case 'alert':

                        $("#mb_btn_ok").click( function() {
                            $.alerts._hide();
                            callback(true);
                        });
                        $("#mb_btn_ok").focus().keypress( function(e) {
                            if( e.keyCode == 13 || e.keyCode == 27 ) $("#mb_btn_ok").trigger('click');
                        });
                        break;
                    case 'confirm':

                        $("#mb_btn_ok").click( function() {
                            $.alerts._hide();
                            if( callback ) callback(true);
                        });
                        $("#mb_btn_no").click( function() {
                            $.alerts._hide();
                            if( callback ) callback(false);
                        });
                        $("#mb_btn_no").focus();
                        //键盘的按键快捷键
                        $("#mb_btn_ok, #mb_btn_no").keypress( function(e) {
                            //enter键
                            if( e.keyCode == 13 ) {$("#mb_btn_ok").trigger('click');}
                            //esc键
                            if( e.keyCode == 27 ){ $("#mb_btn_no").trigger('click');}
                        });
                        break;


                }
            },
            _hide: function() {
                $("#mb_box,#mb_con").remove();
            }
        }
        // 显示提示框,top,top窗体位置当前窗口的高低的百分比,必须填写整数;width窗体显示的宽度。
        zdalert = function(title,top,width, message, callback) {
            $.alerts.alert(title,top,width, message, callback);
        }
        //显示确认框,top,top窗体位置当前窗口的高低的百分比,必须填写整数;width窗体显示的宽度。
        zdconfirm = function(title,top,width, message, callback) {
            $.alerts.confirm(title,top,width, message, callback);
        };




        //生成Css
        var GenerateCss = function (top,width) {

            $("#mb_box").css({  '100%', height: '100%', zIndex: '99999', position: 'fixed',
                filter: 'Alpha(opacity=60)', backgroundColor: 'black', top: '0', left: '0', opacity: '0.6'
            });

            /*$("#mb_con").css({ zIndex: '999999',  '350px', position: 'fixed',
             backgroundColor: 'White', borderRadius: '15px'
             });*/
            //去掉边框的圆
            $("#mb_con").css({ zIndex: '999999', width, position: 'fixed',
                backgroundColor: 'White'
            });

            $("#mb_tit").css({ display: 'block', fontSize: '14px', color: 'white', padding: '10px 15px',
                backgroundColor: '#31B0D5', borderRadius: '0 0 0 0',
                borderBottom: '3px solid #999', fontWeight: 'bold'
            });

            $("#mb_msg").css({ padding: '20px', lineHeight: '20px',
                borderBottom: '1px dashed #DDD', fontSize: '16px',backgroundColor:'#FCFCFC'
            });

            $("#mb_ico").css({ display: 'block', position: 'absolute', right: '10px', top: '9px',
                border: '1px solid Gray',  '18px', height: '18px', textAlign: 'center',
                lineHeight: '16px', cursor: 'pointer', borderRadius: '12px', fontFamily: '微软雅黑'
            });

            $("#mb_btnbox").css({ margin: '15px 0 10px 0', textAlign: 'center' });
            $("#mb_btn_ok,#mb_btn_no").css({  '85px', height: '30px', color: 'white', border: 'none' });
            $("#mb_btn_ok").css({ backgroundColor: '#168bbb' });
            $("#mb_btn_no").css({ backgroundColor: '#168bbb', marginLeft: '20px' });


            //右上角关闭按钮hover样式
            $("#mb_ico").hover(function () {
                $(this).css({ backgroundColor: 'Red', color: 'White' });
            }, function () {
                $(this).css({ backgroundColor: '#DDD', color: 'black' });
            });

            var _widht = document.documentElement.clientWidth; //屏幕宽
            var _height = document.documentElement.clientHeight; //屏幕高

            var boxWidth = $("#mb_con").width();
            var boxHeight = $("#mb_con").height();

            //让提示框居中
            $("#mb_con").css({ top: (_height - boxHeight) / top + "px", left: (_widht - boxWidth) / 2 + "px" });
        }


    })(jQuery);
</script>

<body>
<input id="add" type="button" value="添加" />
<input id="update" type="button" value="修改" />

<script type="text/javascript">

    $("#add").bind("click", function () {
        // $.MsgBox.Alert("消息", "哈哈,添加成功!");

        zdalert('系统提示',3,"350px",'请输入正确数值',function(){

            //要回调的方法
            window.location.href="http://www.baidu.com"});

    });


    //也可以传方法名 test
    $("#update").bind("click", function () {


        // $.MsgBox.Confirm("温馨提示", "确定要进行修改吗?", test);

        zdconfirm('系统确认框',6,"350px",'你确认提交该条数据吗',function(r){
            if(r)
            {
                //...点确定之后执行的内容

                window.location.href="http://www.baidu.com"
            }
        });


    });


</script>

</body>
</html>
原文地址:https://www.cnblogs.com/gynbk/p/7363834.html