引用插件

<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:; left:; width: 100%; height: 100%; background-color: #666666; opacity: 0.5; z-index:;}
.xcConfirm .popBox{position: fixed; left: 50%; top: 50%; background-color: #ffffff; z-index:; 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);

js-自定义对话框的更多相关文章

  1. 基于React.js网页版弹窗|react pc端自定义对话框组件RLayer

    基于React.js实现PC桌面端自定义弹窗组件RLayer. 前几天有分享一个Vue网页版弹框组件,今天分享一个最新开发的React PC桌面端自定义对话框组件. RLayer 一款基于react. ...

  2. Android—关于自定义对话框的工具类

    开发中有很多地方会用到自定义对话框,为了避免不必要的城府代码,在此总结出一个工具类. 弹出对话框的地方很多,但是都大同小异,不同无非就是提示内容或者图片不同,下面这个类是将提示内容和图片放到了自定义函 ...

  3. jquery自定义对话框alert、confirm和prompt

    jQuery Alert Dialogs,又一个基于jQuery的提示框插件,主要包括Alert.Confirm.prompt这三种,还有一个高级范例,可以在提示框内嵌入HTML语言,可以自定义风格样 ...

  4. js自定义弹出框

    js自定义弹出框: 代码如下 <html> <head><title>自定义弹出对话框</title> <style type ="te ...

  5. 炫酷JQUERY自定义对话框插件JDIALOG_JDIALOG弹出对话框和确认对话框插件

    多种类型自定义对话框插件jDialog是一款基于jquery实现的轻量级多种类型的自定义对话框插件 在项目开发中.一般会美化 alert(); 的样式.那么今天我就和大家分享一款非常炫的插件 先来看一 ...

  6. 从零学React Native之04自定义对话框

    本篇主要介绍: 1. 自定义组件 2. Alert 对话框 自定义对话框 之前的我都是利用React Native提供的基础组件对它们进行排列组合, 其实自定义也很简单, 我们还是拿上一篇文章的例子进 ...

  7. Android中的AlertDialog使用示例五(自定义对话框)

    在Android开发中,我们经常会需要在Android界面上弹出一些对话框,比如询问用户或者让用户选择.这些功能我们叫它Android Dialog对话框,AlertDialog实现方法为建造者模式. ...

  8. js自定义验证码

    分享一个js自定义的验证码 window.onload = function () {     var code;     $('.changePassword').click(function () ...

  9. Android自定义对话框

    在android中有自带的对话框,为了美观,很多开发者会使用自定义对话框,如下图: 点击“弹出自定义对话框按钮后”显示如图效果. 首先要自己定义一个xml文件定义自己对话框的样式: <?xml ...

  10. 超酷HTML5 Canvas图表应用Chart.js自定义提示折线图

    超酷HTML5 Canvas图表应用Chart.js自定义提示折线图 效果预览 实例代码 <div class="htmleaf-container"> <div ...

随机推荐

  1. 框架:MVC

    MVC 一.介绍 MVC是模型-视图-控制器的缩写,一种软件思想,强制性的把应用程序的输入.处理和输出分开.可以和任何的重定向能解耦. 三部分的任务说明: 视图:获取数据,显示数据 模型:处理数据 控 ...

  2. linux和 unix 介绍

    linux和unix都是当今鼎鼎大名的操作系统,可以说改变了这个世界,也是当今科技产业的重要基础.让我们回顾一下他们的发展史吧. 1.unix起源. 上世纪六十年代时,大部份计算机都是采用批处理的方式 ...

  3. 7-log4j2之自定义Appender

    一.添加Maven依赖 <dependencies> <dependency> <groupId>org.apache.logging.log4j</grou ...

  4. TDate赋值给Variant时注意的问题

    //Delphi 10.3.1 32bit, Win 7 32bit procedure TForm1.btnTimeToVariantClick(Sender: TObject); var d:TD ...

  5. 在使用MyCat和MySqL时的错误总结

    在mysql中,无法连接虚拟机中的mysql. 原因:防火墙没有关闭 解决方案:service iptables stop 在mycat中,无法打开数据库的表, 原因:mycat在配置文件中设置的是自 ...

  6. ORACLE提示表名无效

    在创建ORACLE数据库时,创建表 提示表名无效 请查看数据库表名是否出现了小写字母或者关键字,如USER

  7. shell 中变获取值及运算的几种方法

    num=$(tail ./image/1.txt -n 1) num=$(($num+1))

  8. mybatis的工作原理

    MyBatis的框架架构 看到Mybatis的框架图,可以清晰的看到Mybatis的整体核心对象,我更喜欢用自己的图来表达Mybatis的整个的执行流程.如下图所示: 原理详解: MyBatis应用程 ...

  9. 【计算机视觉】seetaFace

    class impl class FaceDetection::Impl { public: Impl() : detector_(new seeta::fd::FuStDetector()), sl ...

  10. 10.我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。 请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?

    我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形. 请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法? 是不是发现看不懂,哈哈:编程题就是这样,一定要归纳,手写过程: n ...