Jquery 弹出对话框插件xcConfirm.js,感觉很方便使用,使用方法如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Demo</title>
<link rel="stylesheet" type="text/css" href="css/xcConfirm.css"/>
<script src="js/jquery-1.9.1.js" type="text/javascript" charset="utf-8"></script>
<script src="js/xcConfirm.js" type="text/javascript" charset="utf-8"></script>
<style type="text/css">
.sgBtn{width: 135px; height: 35px; line-height: 35px; margin-left: 10px; margin-top: 10px; text-align: center; background-color: #0095D9; color: #FFFFFF; float: left; border-radius: 5px;}
</style>
<script type="text/javascript">
$(function(){
$("#btn1").click(function(){
var txt= "提示文字,提示文字,提示文字,提示文字,提示文字,提示文字";
window.wxc.xcConfirm(txt, window.wxc.xcConfirm.typeEnum.info);
});
$("#btn2").click(function(){
var txt= "提示文字,提示文字,提示文字,提示文字,提示文字,提示文字";
window.wxc.xcConfirm(txt, window.wxc.xcConfirm.typeEnum.confirm);
});
$("#btn3").click(function(){
var txt= "提示文字,提示文字,提示文字,提示文字,提示文字,提示文字";
window.wxc.xcConfirm(txt, window.wxc.xcConfirm.typeEnum.warning);
});
$("#btn4").click(function(){
var txt= "提示文字,提示文字,提示文字,提示文字,提示文字,提示文字";
window.wxc.xcConfirm(txt, window.wxc.xcConfirm.typeEnum.error);
});
$("#btn5").click(function(){
var txt= "提示文字,提示文字,提示文字,提示文字,提示文字,提示文字";
window.wxc.xcConfirm(txt, window.wxc.xcConfirm.typeEnum.success);
});
$("#btn6").click(function(){
var txt= "请输入";
window.wxc.xcConfirm(txt, window.wxc.xcConfirm.typeEnum.input,{
onOk:function(v){
console.log(v);
}
});
});
$("#btn7").click(function(){
var txt= "自定义呀";
var option = {
title: "自定义",
btn: parseInt("0011",2),
onOk: function(){
console.log("确认啦");
}
}
window.wxc.xcConfirm(txt, "custom", option);
});
$("#btn8").click(function(){
var txt= "默认";
window.wxc.xcConfirm(txt);
});
});
</script>
</head>
<body>
<div class="" style="height: 768px;">
<div class="sgBtn" id="btn1">弹窗1(信息)</div>
<div class="sgBtn" id="btn2">弹窗2(提示)</div>
<div class="sgBtn" id="btn3">弹窗3(警告)</div>
<div class="sgBtn" id="btn4">弹窗4(错误)</div>
<div class="sgBtn" id="btn5">弹窗5(成功)</div>
<div class="sgBtn" id="btn6">弹窗6(输入框)</div>
<div class="sgBtn" id="btn7">弹窗7(自定义)</div>
<div class="sgBtn" id="btn8">弹窗8(默认)</div>
</div>
</body>
</html>
引入的文件js和css文件如下:
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:"自定义"})
* 只有确定按钮
* $("#btn1").click(function(){
var txt= "提示文字,提示文字,提示文字,提示文字,提示文字,提示文字";
window.wxc.xcConfirm(txt, window.wxc.xcConfirm.typeEnum.info);
});
有确认和取消按钮,图标是一个问号
$("#btn2").click(function(){
var txt= "提示文字,提示文字,提示文字,提示文字,提示文字,提示文字";
window.wxc.xcConfirm(txt, window.wxc.xcConfirm.typeEnum.confirm);
});
有确认和取消按钮,图标是一个叹号
$("#btn3").click(function(){
var txt= "提示文字,提示文字,提示文字,提示文字,提示文字,提示文字";
window.wxc.xcConfirm(txt, window.wxc.xcConfirm.typeEnum.warning);
});
有确认,图标是一个错误
$("#btn4").click(function(){
var txt= "提示文字,提示文字,提示文字,提示文字,提示文字,提示文字";
window.wxc.xcConfirm(txt, window.wxc.xcConfirm.typeEnum.error);
});
$("#btn5").click(function(){
var txt= "提示文字,提示文字,提示文字,提示文字,提示文字,提示文字";
window.wxc.xcConfirm(txt, window.wxc.xcConfirm.typeEnum.success);
});
$("#btn6").click(function(){
var txt= "请输入";
window.wxc.xcConfirm(txt, window.wxc.xcConfirm.typeEnum.input,{
onOk:function(v){
console.log(v);
}
});
});
*/
(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);
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: #333;
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; */
font-weight: 500;
color: #535e66;
}
.xcConfirm .popBox .ttBox {
height: 30px;
line-height: 30px;
padding: 14px 30px;
border-bottom: solid 1px #eef0f1;
}
.xcConfirm .popBox .ttBox .tt {
color: #333;
font-size: 18px;
display: block;
float: left;
height: 30px;
position: relative;
}
.xcConfirm .popBox .ttBox .clsBtn {
display: block;
cursor: pointer;
width: 12px;
height: 12px;
position: absolute;
top: 22px;
right: 30px;
background: url(../img/icons.png) -48px -96px no-repeat;
}
.xcConfirm .popBox .txtBox {
margin: 20px 60px;
height: 120px;
overflow: hidden;
}
.xcConfirm .popBox .txtBox .bigIcon {
float: left;
margin-right: 20px;
width: 48px;
height: 48px;
background-image: url(../img/icons.png);
background-repeat: no-repeat;
background-position: 48px 0;
}
.xcConfirm .popBox .txtBox p {
height: 100px;
font-size:13px;
margin-top: 16px;
line-height: 26px;
overflow-x: hidden;
overflow-y: auto;
}
.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: 40px;
}
.xcConfirm .popBox .sgBtn {
display: block;
cursor: pointer;
float: left;
width: 95px;
height: 35px;
line-height: 35px;
text-align: center;
color: #FFFFFF;
border-radius: 5px;
}
.xcConfirm .popBox .sgBtn.ok {
background-color: #0095d9;
color: #FFFFFF;
}
.xcConfirm .popBox .sgBtn.cancel {
/* background-color: #333;
color: #FFFFFF; */
background-color: #d2d0d0;
color: #333;
}
参考的链接:http://www.jq22.com/jquery-info2351,我对css样式做了一点点改动,显示的效果如下: