zoukankan      html  css  js  c++  java
  • 自己写的基于bootstrap风格的弹框插件

    自己写的一款基于bootstrap风格的弹框插件,暂时只有确认框、提示框。后续功能扩展、bug修改再更新。

    ;(function($){
        //默认参数
        var PARAMS;
        var DEFAULTPARAMS = 
                        {
                             500,
                            title: '提示消息',
                            content: '',
                            okbtn: '确定',
                            cancelbtn: '取消',
                            headerBackground: 'info',
                            vbackdrop: 'static',        //默认点击遮罩不会关闭modal
                            vkeyboard: true,            //按esc关闭modal
                            confirmFn: new Object,
                            cancelFn: new Object
                        };
        $.dialog = {
            confirm: function(params){
                $.dialog.initParmas(params);
                $.dialog.Show('confirm', function(e){
                    if($.isFunction(PARAMS.confirmFn)){
                        PARAMS.confirmFn(e);
                    }
                }, 
                function(f){
                    if($.isFunction(PARAMS.cancelFn)){
                        PARAMS.cancelFn(f);
                    }
                });
            },
            alert: function(params){
                $.dialog.initParmas(params);
                $.dialog.Show('alert', function(e){
                    if($.isFunction(PARAMS.confirmFn)){
                        PARAMS.confirmFn(e);
                    }
                }, null);
            },
            Show: function(type, confirmCaller, cancelCaller){
                var html = '<div class="modal fade" id="tipModal">'
                         + '<div class="modal-dialog" style="'+PARAMS.width+'px"><div class="modal-content">'
                         + '<div class="modal-header header_'+PARAMS.headerBackground+'">'
                         + '<a class="close" data-dismiss="modal">&times;</a>'
                         + '<h4 class="modal-title text-center">'+PARAMS.title+'</h4></div>'
                         + '<div class="modal-body text-center body_content">'+PARAMS.content+'</div>'
                         + '<div class="modal-footer">';
                if(type=='confirm'){
                    html += '<button class="btn btn-default" id="btnCancel">'+PARAMS.cancelbtn+'</button>';
                }
                html += '<button class="btn btn-primary" id="btnOk">'+PARAMS.okbtn+'</button>';
                html += '</div></div></div></div>';
                $('body').append(html);
                $('#tipModal').modal({backdrop:PARAMS.vbackdrop,keyboard:PARAMS.vkeyboard});
                $.dialog.setDialogEvent(type, confirmCaller, cancelCaller);
            },
            initParmas: function(params){
                if(params!= undefined && params!= null){
                    PARAMS = $.extend({}, DEFAULTPARAMS, params);
                }
            },
            setDialogEvent: function(type, confirmCaller, cancelCaller){
                switch(type){
                    case 'confirm':
                        $("#btnOk").click(function(){
                            $('#tipModal').modal('hide');
                            $('#tipModal').on('hidden.bs.modal', function(){
                                $('#tipModal').remove();                //要先remove modal
                                if($.isFunction(confirmCaller)){
                                    confirmCaller(true);
                                }
                                
                            });
                        });
                        $("#btnCancel").click(function(){
                            $('#tipModal').modal('hide');
                            $('#tipModal').on('hidden.bs.modal', function(){
                                $('#tipModal').remove();
                                if($.isFunction(cancelCaller)){
                                    cancelCaller(false);
                                }
                                
                            });
                        });
                        break;
                    case 'alert':
                        $("#btnOk").click(function(){
                            $('#tipModal').modal('hide');
                            $('#tipModal').on('hidden.bs.modal', function(){
                                $('#tipModal').remove();
                                if($.isFunction(confirmCaller)){
                                    confirmCaller(true);
                                }
                            });
                        });
                        break;
                };
                $('#tipModal').on('hidden.bs.modal', function(){
                    $('#tipModal').remove();
                });
                $("#tipModal .close").click(function(){
                    $('#tipModal').on('hidden.bs.modal', function(){
                        $('#tipModal').remove();
                    });
                });
                //设置窗口可拖动
                $('#tipModal .modal-header').Draggable($('#tipModal .modal-dialog'));
            }
        };
    
        dialogConfirm = function(params){
            $.dialog.confirm(params);
        };
    
        dialogAlert = function(params){
            $.dialog.alert(params);
        };
    })(jQuery);
    
    //拖动层
    ;(function($){
        $.fn.extend({
            Draggable: function(objMoved){
                return this.each(function(){
                    //鼠标按下时的位置
                    var mouseDownPosiX, mouseDownPosiY;
                    //obj的初始位置
                    var objPosiX, objPosiY;
                    //鼠标移动的距离
                    var tempX, tempY;
                    //移动的对象
                    var obj = $(objMoved)==undefined ? $(this): $(objMoved);
    
                    //是否处于移动状态
                    var status = false;
    
                    $(this).mousedown(function(e){
                        status = true;
                        mouseDownPosiX = e.pageX;
                        mouseDownPosiY = e.pageY;
                        objPosiX = obj.css("left").replace("px", "");
                        objPosiY = obj.css("top").replace("px", "");
                    }).mouseup(function(){
                        status = false;
                    }); 
                    $(document).mousemove(function(e){
                        if(status){
                            tempX = parseInt(e.pageX) - parseInt(mouseDownPosiX) + parseInt(objPosiX);
                            tempY = parseInt(e.pageY) - parseInt(mouseDownPosiY) + parseInt(objPosiY);
                            obj.css({ "left": tempX + "px", "top": tempY + "px" }); 
                        }
                        //判断是否超出窗体
                        //计算出弹出层距离右边的位置
                        var dialogRight = parseInt($(window).width())-(parseInt(obj.css("left"))+parseInt(obj.width()));
                        var dialogBottom = parseInt($(window).height())-(parseInt(obj.css("top"))+parseInt(obj.height()));
                        var maxLeft = $(window).width()-obj.width();
                        var maxTop = $(window).height()-obj.height();
                        if(parseInt(obj.css("left"))<=0){
                              obj.css("left","0px"); 
                        }
                        if(parseInt(obj.css("top"))<=0){
                            obj.css("top","0px"); 
                        }
                        if(dialogRight<=0){
                            obj.css("left",maxLeft+'px'); 
                        }
                        if(dialogBottom<=0){
                            obj.css("top", maxTop+'px');
                        }
                    }).mouseup(function(){
                        status = false;
                    }).mouseleave(function(){
                        status = false;
                    });
                });
            }
        });
    })(jQuery)

    html页面中调用:

    <body>
    <div class="box">
        <button class="btn btn-default" id="btn_confirm">确认框</button>
        <button class="btn btn-default" id="btn_cancel">提示框</button>
    </div>
    </body>
    <script src="jquery/jquery.min.js"></script>
    <script src="bootstrap/bootstrap.min.js"></script>
    <script src="js/dialog.js"></script>
    <script type="text/javascript">
    $(function(){
        $("#btn_confirm").click(function(){
            dialogConfirm({
                 500,
                content: '确定要删除吗?',
                headerBackground: 'info',
                vbackdrop: true,        //默认点击遮罩不会关闭modal
                vkeyboard: true,            //按esc关闭modal
                confirmFn: function(e){
                    dialogAlert({
                         300,
                        content: 'true',
                        headerBackground: 'success',
                        vbackdrop: 'static',        //默认点击遮罩不会关闭modal
                        vkeyboard: true            //按esc关闭modal
                    });
                },
                cancelFn: function(f){
                    alert(f);
                }
            })
        });
    
        $('#btn_cancel').click(function(){
            dialogAlert({
                 300,
                content: '删除成功!',
                headerBackground: 'error',
                vbackdrop: 'static',        //默认点击遮罩不会关闭modal
                vkeyboard: true,            //按esc关闭modal
            });
        });
    });
    </script>

    感觉写的不是很好,后面修改了或者扩展了功能再更新。源码会上传到文件。

    文件名是:dialogByCy.rar

  • 相关阅读:
    【数据挖掘导论】——绪论
    Debian Customer PPA RFC (by quqi99)
    uva 11248 Frequency Hopping (最大流)
    非常easy的JAVA反射教程
    【Spark】RDD操作具体解释4——Action算子
    NHibernate剖析:Mapping篇之Mapping-By-Code(1):概览
    eclipse中文凝视字体太小解决方法
    cocos2d-x-3.x bringToFront &amp; sendToBack实现
    POJ 1018 Communication System 题解
    监听器和 利 用观察者设计模式设计一个程序
  • 原文地址:https://www.cnblogs.com/tenWood/p/6161069.html
Copyright © 2011-2022 走看看