zoukankan      html  css  js  c++  java
  • js-自定义对话框

    引用插件

    <link rel="stylesheet" type="text/css" href="${ctx }/resources/common/css/xcConfirm.css"/>
    <script type="text/javascript" src="${ctx }/resources/jquery-1.11.3/jquery-1.11.3.js" charset="utf-8"></script>
    <script type="text/javascript" src="${ctx }/resources/common/js/xcConfirm.js" charset="utf-8"></script>

    对话框:点击确定按钮后进行回调

    dataSource = function (res) {
          if (res) {
                      //执行代码
              }
          }
     var res = showConfirmDialog("提示",data.msg,"0011",dataSource);
    
    
    //提示对话框
        function showConfirmDialog(title,message,flag,dataSource) {
            var txt=  message;
            var option = {
                title: title,
                btn: parseInt(flag,2),//("0001",2)-确定按钮 ("0010",2)-取消按钮 ("0011",2)-确定&&取消
                onOk: function(){
                    if (dataSource != undefined && dataSource != null) 
                        dataSource("ok");
                }
            }
            window.wxc.xcConfirm(txt, "custom", option);
        }

    效果:

    xcConfirm.css

    /*垂直居中*/
    .verticalAlign{ vertical-align:middle; display:inline-block; height:100%; margin-left:-1px;}
    
    .xcConfirm .xc_layer{position: fixed; top: 0; left: 0; width: 100%; height: 100%; background-color: #666666; opacity: 0.5; z-index: 2147000000;}
    .xcConfirm .popBox{position: fixed; left: 50%; top: 50%; background-color: #ffffff; z-index: 2147000001; width: 570px; height: 300px; margin-left: -285px; margin-top: -150px; border-radius: 5px; font-weight: bold; color: #535e66;}
    .xcConfirm .popBox .ttBox{height: 50px; line-height: 30px; padding: 14px 30px; border-bottom: solid 1px #eef0f1;}
    .xcConfirm .popBox .ttBox .tt{font-size: 18px; display: block; float: left; height: 30px; position: relative;}
    .xcConfirm .popBox .ttBox .clsBtn{display: block; cursor: pointer; width: 22px; height: 22px; position: absolute; top: 22px; right: 30px; background: url(../img/close1.png) 0px 0px no-repeat;}
    .xcConfirm .popBox .txtBox{margin: 40px 100px; height: 100px; overflow: hidden;}
    .xcConfirm .popBox .txtBox .bigIcon{float: left; margin-right: 20px; width: 48px; height: 48px; background-image: url(../img/close1.png); background-repeat: no-repeat; background-position: 48px 0;}
    .xcConfirm .popBox .txtBox p{ height: 84px; margin-top: 16px; line-height: 26px; overflow-x: hidden; overflow-y: auto;font-size:20px;}
    .xcConfirm .popBox .txtBox p input{width: 364px; height: 30px; border: solid 1px #eef0f1; font-size: 18px; margin-top: 6px;}
    .xcConfirm .popBox .btnArea{border-top: solid 1px #eef0f1;}
    .xcConfirm .popBox .btnGroup{float: right;}
    .xcConfirm .popBox .btnGroup .sgBtn{margin-top: 14px; margin-right: 10px;}
    .xcConfirm .popBox .sgBtn{display: block; cursor: pointer; float: left; width: 100px; height: 50px; line-height: 50px; text-align: center; color: #FFFFFF; border-radius: 5px;font-size:18px;}
    .xcConfirm .popBox .sgBtn.ok{background-color: #ed4346; color: #FFFFFF;}
    .xcConfirm .popBox .sgBtn.cancel{background-color: #A09D9D; color: #FFFFFF;}

    xcConfirm.js

    /*
     * 使用说明:
     * window.wxc.Pop(popHtml, [type], [options])
     * popHtml:html字符串
     * type:window.wxc.xcConfirm.typeEnum集合中的元素
     * options:扩展对象
     * 用法:
     * 1. window.wxc.xcConfirm("我是弹窗<span>lalala</span>");
     * 2. window.wxc.xcConfirm("成功","success");
     * 3. window.wxc.xcConfirm("请输入","input",{onOk:function(){}})
     * 4. window.wxc.xcConfirm("自定义",{title:"自定义"})
     */
    (function($){
        window.wxc = window.wxc || {};
        window.wxc.xcConfirm = function(popHtml, type, options) {
            var btnType = window.wxc.xcConfirm.btnEnum;
            var eventType = window.wxc.xcConfirm.eventEnum;
            var popType = {
                info: {
                    title: "信息",
                    icon: "0 0",//蓝色i
                    btn: btnType.ok
                },
                success: {
                    title: "成功",
                    icon: "0 -48px",//绿色对勾
                    btn: btnType.ok
                },
                error: {
                    title: "错误",
                    icon: "-48px -48px",//红色叉
                    btn: btnType.ok
                },
                confirm: {
                    title: "提示",
                    icon: "-48px 0",//黄色问号
                    btn: btnType.okcancel
                },
                warning: {
                    title: "警告",
                    icon: "0 -96px",//黄色叹号
                    btn: btnType.okcancel
                },
                input: {
                    title: "输入",
                    icon: "",
                    btn: btnType.ok
                },
                custom: {
                    title: "",
                    icon: "",
                    btn: btnType.ok
                }
            };
            var itype = type ? type instanceof Object ? type : popType[type] || {} : {};//格式化输入的参数:弹窗类型
            var config = $.extend(true, {
                //属性
                title: "", //自定义的标题
                icon: "", //图标
                btn: btnType.ok, //按钮,默认单按钮
                //事件
                onOk: $.noop,//点击确定的按钮回调
                onCancel: $.noop,//点击取消的按钮回调
                onClose: $.noop//弹窗关闭的回调,返回触发事件
            }, itype, options);
            
            var $txt = $("<p>").html(popHtml);//弹窗文本dom
            var $tt = $("<span>").addClass("tt").text(config.title);//标题
            var icon = config.icon;
            var $icon = icon ? $("<div>").addClass("bigIcon").css("backgroundPosition",icon) : "";
            var btn = config.btn;//按钮组生成参数
            
            var popId = creatPopId();//弹窗索引
            
            var $box = $("<div>").addClass("xcConfirm");//弹窗插件容器
            var $layer = $("<div>").addClass("xc_layer");//遮罩层
            var $popBox = $("<div>").addClass("popBox");//弹窗盒子
            var $ttBox = $("<div>").addClass("ttBox");//弹窗顶部区域
            var $txtBox = $("<div>").addClass("txtBox");//弹窗内容主体区
            var $btnArea = $("<div>").addClass("btnArea");//按钮区域
            
            var $ok = $("<a>").addClass("sgBtn").addClass("ok").text("确定");//确定按钮
            var $cancel = $("<a>").addClass("sgBtn").addClass("cancel").text("取消");//取消按钮
            var $input = $("<input>").addClass("inputBox");//输入框
            var $clsBtn = $("<a>").addClass("clsBtn");//关闭按钮
            
            //建立按钮映射关系
            var btns = {
                ok: $ok,
                cancel: $cancel
            };
            
            init();
            
            function init(){
                //处理特殊类型input
                if(popType["input"] === itype){
                    $txt.append($input);
                }
                
                creatDom();
                bind();
            }
            
            function creatDom(){
                $popBox.append(
                    $ttBox.append(
                        $clsBtn
                    ).append(
                        $tt
                    )
                ).append(
                    $txtBox.append($icon).append($txt)
                ).append(
                    $btnArea.append(creatBtnGroup(btn))
                );
                $box.attr("id", popId).append($layer).append($popBox);
                $("body").append($box);
            }
            
            function bind(){
                //点击确认按钮
                $ok.click(doOk);
                
                //回车键触发确认按钮事件
                $(window).bind("keydown", function(e){
                    if(e.keyCode == 13) {
                        if($("#" + popId).length == 1){
                            doOk();
                        }
                    }
                });
                
                //点击取消按钮
                $cancel.click(doCancel);
                
                //点击关闭按钮
                $clsBtn.click(doClose);
            }
    
            //确认按钮事件
            function doOk(){
                var $o = $(this);
                var v = $.trim($input.val());
                if ($input.is(":visible"))
                    config.onOk(v);
                else
                    config.onOk();
                $("#" + popId).remove(); 
                config.onClose(eventType.ok);
            }
            
            //取消按钮事件
            function doCancel(){
                var $o = $(this);
                config.onCancel();
                $("#" + popId).remove(); 
                config.onClose(eventType.cancel);
            }
            
            //关闭按钮事件
            function doClose(){
                $("#" + popId).remove();
                config.onClose(eventType.close);
                $(window).unbind("keydown");
            }
            
            //生成按钮组
            function creatBtnGroup(tp){
                var $bgp = $("<div>").addClass("btnGroup");
                $.each(btns, function(i, n){
                    if( btnType[i] == (tp & btnType[i]) ){
                        $bgp.append(n);
                    }
                });
                return $bgp;
            }
    
            //重生popId,防止id重复
            function creatPopId(){
                var i = "pop_" + (new Date()).getTime()+parseInt(Math.random()*100000);//弹窗索引
                if($("#" + i).length > 0){
                    return creatPopId();
                }else{
                    return i;
                }
            }
        };
        
        //按钮类型
        window.wxc.xcConfirm.btnEnum = {
            ok: parseInt("0001",2), //确定按钮
            cancel: parseInt("0010",2), //取消按钮
            okcancel: parseInt("0011",2) //确定&&取消
        };
        
        //触发事件类型
        window.wxc.xcConfirm.eventEnum = {
            ok: 1,
            cancel: 2,
            close: 3
        };
        
        //弹窗类型
        window.wxc.xcConfirm.typeEnum = {
            info: "info",
            success: "success",
            error:"error",
            confirm: "confirm",
            warning: "warning",
            input: "input",
            custom: "custom"
        };
    
    })(jQuery);
  • 相关阅读:
    如何在android studio 1.0 启动时设置代理【解决WARN
    【转】如何阅读android源码
    【Android】 BroadcastReceiver详解
    如何在Android app中支持多主题
    从源码角度剖析 setContentView() 背后的机制
    【转】Android EditText的使用及值得注意的地方
    【转】Android应用程序打包时,出现错误:"XXX" is not translated in "af" (Afrikaans), "am" (Amharic), "ar" (Arabic).....
    【转】Fragment对用户可见的判断实践,亲测有效
    【转】从java1到java9每个版本都有什么新特性?
    【转】贝塞尔曲线介绍
  • 原文地址:https://www.cnblogs.com/lijianda/p/9085982.html
Copyright © 2011-2022 走看看