自己使用js/jquery写的一个定制对话框控件


Posted in Javascript onMay 02, 2014

最近在做一个游戏项目,项目里面很多需要用到对话框,而且得用上美工做的图片,这样的话好像就不好去找一些现成的对话框控件了,于是便琢磨着自己做一个通用的控件,虽然不是绝对通用啦,但在我这个项目里还是可以随意调用的,思想的话也可以借鉴到别的项目中。

先贴出主要代码:

//对话框的基本html内容,绝对定位,高宽设置,背景图片,标题,两个按钮图 
var tdlz_dialog_content = "<div id='tdlz_dialog" 
+ "' style='position:absolute;text-align:center;width:540px;height:331px;background:url(assets/images/add_fbc.png);'><ul><li id='dialog_lb_text' style='margin-top:100px;color:#fff;font-size:25px'>" 
+ "</li><li style='margin-top:100px;cursor:pointer'><img id='tdlz_dialog_ok' src='assets/images/queren.png'></img><img id='tdlz_dialog_cancel' src='assets/images/quxiao.png'></img></li></ul></div>"; 
//text:标题,type:对话框类型,funcOK:确定的执行函数,time:倒计时或alert显示的时间 
function showTdDialog(text, type, funcOK, time) { 
var dialogid = "#tdlz_dialog"; 
$(dialogid).show(500); 
$("#dialog_lb_text").html(text); 
switch (type) { 
case "show"://展示信息的对话框,带一个确定键,点击后消失 
$("#tdlz_dialog_cancel").hide(); 
$("#tdlz_dialog_ok").unbind(); 
$("#tdlz_dialog_ok").click(function () { 
$(dialogid).hide(500); 
$("#tdlz_dialog_ok").css("margin-right", "0"); 
$("#tdlz_dialog_cancel").css("margin-left", "0"); 
}); 
break; 
case "alert"://警告对话框,time时间后消失 
$("#tdlz_dialog_cancel").hide(); 
$("#tdlz_dialog_ok").unbind(); 
setTimeout(function () { 
$(dialogid).hide(500); 
$("#tdlz_dialog_ok").css("margin-right", "0"); 
$("#tdlz_dialog_cancel").css("margin-left", "0"); 
}, time); 
$("#tdlz_dialog_ok").click(function () { 
$(dialogid).hide(500); 
$("#tdlz_dialog_ok").css("margin-right", "0"); 
$("#tdlz_dialog_cancel").css("margin-left", "0"); 
}); 
break; 
case "confirm"://确认对话框,带确认取消键,确认则执行函数,否则不执行并消失 
$("#tdlz_dialog_cancel").show(); 
$("#tdlz_dialog_ok").css("margin-right", "5%"); 
$("#tdlz_dialog_cancel").css("margin-left", "5%"); 
$("#tdlz_dialog_ok").unbind(); 
$("#tdlz_dialog_ok").click(function () { 
funcOK(); 
setTimeout(function () { 
$(dialogid).hide(500) 
}, 1000); }); 
$("#tdlz_dialog_cancel").click(function () { 
$(dialogid).hide(500); 
}); 
break; 
case "time"://倒计时对话框,显示time时间倒计时,结束后消失 
$("#tdlz_dialog_cancel").hide(); 
$("#dialog_lb_text").html(text + "" + time); 
var a = setInterval(function () { 
time = parseInt(time) - 1; 
if (time < 0) { 
clearInterval(a); 
$(dialogid).hide(500); 
} 
$("#dialog_lb_text").html(text + "" + time); 
}, 1000); 
$("#tdlz_dialog_ok").unbind(); 
$("#tdlz_dialog_ok").click(function () { 
$(dialogid).hide(500); 
$("#tdlz_dialog_ok").css("margin-right", "0"); 
$("#tdlz_dialog_cancel").css("margin-left", "0"); 
}); 
break; 
} 
}

除了上面的使用函数,还需要对对话框进行初始化,为了插入文档中并且居中显示
function initDialog() { 
$("body").before(tdlz_dialog_content); 
//计算恰当的中间位置 
var top_percent = (window.innerHeight / 4) / window.innerHeight 
var left_percent = (window.innerWidth / 2 - $("#tdlz_dialog").width() / 2) / window.innerWidth; 
$("#tdlz_dialog").css("top", top_percent * 100 + "%"); 
$("#tdlz_dialog").css("left", left_percent * 100 + "%"); 
$("#tdlz_dialog").css("z-index", "100"); 
$("#tdlz_dialog").hide(); 
}

使用的时候如下(以confirm对话框为例):
initDialog(); 
showTdDialog("I'm a Dialog","confirm",function(){ console.log("Button OK Clicked!"); 
});

效果图如下:
自己使用js/jquery写的一个定制对话框控件
Javascript 相关文章推荐
js滚动条回到顶部的代码
Dec 06 Javascript
javascript实现密码强度显示
Mar 18 Javascript
JS实现将Asp.Net的DateTime Json类型转换为标准时间的方法
Aug 02 Javascript
js严格模式总结(分享)
Aug 22 Javascript
原生js实现新闻列表展开/收起全文功能
Jan 20 Javascript
vue 2.0组件与v-model详解
Mar 27 Javascript
浅谈JavaScript find 方法不支持IE的问题
Sep 28 Javascript
babel的使用及安装配置教程
Feb 22 Javascript
关于TypeScript模块导入的那些事
Jun 12 Javascript
探索node之事件循环的实现
Oct 30 Javascript
JavaScript实现复选框全选功能
Apr 11 Javascript
ajax请求前端跨域问题原因及解决方案
Oct 16 Javascript
将form表单中的元素转换成对象的方法适用表单提交
May 02 #Javascript
jQuery简单图表peity.js使用示例
May 02 #Javascript
jsPDF导出pdf示例
May 02 #Javascript
ExtJS4利根据登录后不同的角色分配不同的树形菜单
May 02 #Javascript
ExtJS4给Combobox设置列表中的默认值示例
May 02 #Javascript
ExtJS4如何自动生成控制grid的列显示、隐藏的checkbox
May 02 #Javascript
ExtJS4如何给同一个formpanel不同的url
May 02 #Javascript
You might like
strpos() 函数判断字符串中是否包含某字符串的方法
2019/01/16 PHP
PHP代码覆盖率统计详解
2020/07/22 PHP
用JavaScript计算在UTF-8下存储字符串占用字节数
2013/08/08 Javascript
jQuery中offsetParent()方法用法实例
2015/01/19 Javascript
jQuery实现提交按钮点击后变成正在处理字样并禁止点击的方法
2015/03/24 Javascript
JQuery中DOM加载与事件执行实例分析
2015/06/13 Javascript
浅谈AngularJS中ng-class的使用方法
2016/11/11 Javascript
Javascript使用SWFUpload进行多文件上传
2016/11/16 Javascript
JavaScript数组复制详解
2017/02/02 Javascript
微信小程序中button组件的边框设置的实例详解
2017/09/27 Javascript
React Navigation 使用中遇到的问题小结
2018/05/08 Javascript
Vue动态控制input的disabled属性的方法
2018/06/26 Javascript
基于vue如何发布一个npm包的方法步骤
2019/05/15 Javascript
jQuery表单选择器用法详解
2019/08/22 jQuery
[03:22]DSPL第一期精彩集锦:酷炫到底!
2014/11/07 DOTA
python获取远程图片大小和尺寸的方法
2015/03/26 Python
Python中使用pprint函数进行格式化输出的教程
2015/04/07 Python
Python数据结构与算法之使用队列解决小猫钓鱼问题
2017/12/14 Python
python编辑用户登入界面的实现代码
2018/07/16 Python
pytorch 模型的train模式与eval模式实例
2020/02/20 Python
Python中if有多个条件处理方法
2020/02/26 Python
Python scrapy爬取小说代码案例详解
2020/07/09 Python
python Matplotlib数据可视化(1):简单入门
2020/09/30 Python
使用CSS3实现字体颜色渐变的实现
2020/08/10 HTML / CSS
html5 canvas的绘制文本自动换行的示例代码
2018/09/17 HTML / CSS
Theflamel意大利:女士奢华服装、鞋子和配件
2020/01/11 全球购物
大学生职业生涯规划范文
2014/01/22 职场文书
销售竞赛活动方案
2014/08/23 职场文书
银行转正自我鉴定
2014/09/29 职场文书
公司股份合作协议书
2014/12/07 职场文书
因家庭原因离职的辞职信范文
2015/05/12 职场文书
工作自我评价范文
2019/03/21 职场文书
如何自己动手写SQL执行引擎
2021/06/02 MySQL
Pycharm连接远程服务器并远程调试的全过程
2021/06/24 Python
Node与Python 双向通信的实现代码
2021/07/16 Javascript
「魔导具师妲莉亚永不妥协~从今天开始的自由职人生活~」1、2卷发售宣传CM公开
2022/03/21 日漫