`
willin2004
  • 浏览: 17088 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

用jQuery实现的模态弹出窗口,封装了alert和confirm

阅读更多
闲来无事做了一个前台UI的dialog组件,测试了一下运行良好,能支持IE6、7、8和firefox2.0,其他没测。调用也非常简单配置好相应参数就可以了。

软件功能:
* 无限级弹出窗口
* Esc退出block弹出窗口
* 可拖动窗口
* 模态窗口
* 模态alert警告对话框
* 模态confirm对话框
* 页面局部模态
* 绑定按钮响应函数
* 弹出窗口加载iframe
* 自定义背景样式

组件提供了六个函数:
$.funkyUI   // 弹出模态窗口
$.unfunkyUI // 关闭模态窗口

$.alert //警告提示对话框
$.confirm //确认和取消对话框

$.fn.block  //块模态
$.fn.unblock//解除块模态

调用示例:
$.blockUI({
url:"1.html",//弹出窗口显示的内容,使用iframe
OKEvent:okEvent,//okEvent是自定义的确定按钮响应函数,
css:{width:"700",height:"500"}
});
$.alert("这是警告窗口");
$.confirm("这是个Boolean窗口");

$('#blocked').block();//id为blocked的元素设置为只读
$('#blocked').unblock();//解除

实现的思路:
我在主窗体中创建一个层,用来作为弹出窗体,包含一个iframe,通过参数指定URL,作为显示的内容,我觉得可能会有利于代码的重用,代码管理起来要方便一些
弹出窗口中含有的弹出窗口也在主窗体中创建,这样结构简单一点,比较容易管理。我在创建弹出窗口的时候在主窗体中声明一个栈,把当前iframe的window对象压入栈,这样不管我现在弹出了多少个窗口总能很容易的找到其中的任意一个的对象。

有感兴趣的把我的代码下载回去看看,然后给我提提意见,帮我提高。。。
觉得可用的随便用,有不明白的问我

新上传了修正版,修正了弹出框弹出位置不太精确的bug,新增无弹出窗体提示信息,用于类似Ajax请求等待。

再次上传修正版本2,此版本修正了二楼提出的bug,另外修复了进行局部block 后,弹出对话框不能正常unblock的bug

2009-7-8上传对ie6下不能遮挡select选框的修正版本(发现一个意想不到的bug,赶紧删掉)
分享到:
评论
72 楼 yangbaizhiyu 2010-01-15  
感谢你提供这么好的插件,经过几天的研究和摸索,提几点在各楼主遇到的问题
1、对话框关闭问题:
   解决方法:将remove()方法中的
   //topWin.$._Array[topWin.$._Array.length-1].$.DialogData.dialogDiv.hide();
//topWin.$._Array[topWin.$._Array.length-1].$.DialogData.dialogDiv.fadeIn("fast");
//win.$.DialogData.dialogDiv.fadeOut("normal");
$('#_DialogDiv_'+opts.id).fadeOut("normal");
改为
topWin.$._Array[topWin.$._Array.length-1].$.DialogData.dialogDiv.show();
topWin.$._Array[topWin.$._Array.length-1].$.DialogData.dialogDiv.fadeIn("fast");
win.$.DialogData.dialogDiv.fadeOut("normal");
$('#_DialogDiv_'+opts.id).hide();
2、如何在frameset中使用?
   解决方法:在定义变量topWin时应该修改为:
    var topWin = window.name == ''? window.top:window.top.frames[window.name];
   修改//计算窗口的高宽和滚动条的位置,确保显示在屏幕正中间
    将这里的window.top修改为topWin
OK,问题可以解决了!
71 楼 NIIT_zhu 2010-01-12  
我有一个问题,呵呵。我要提交模态页面的内容,确认按钮好像不能用。
70 楼 ylz4647 2009-12-25  
<frameset rows="170,*" cols="*" frameborder="Yes" border="2" framespacing="0">
  <frame src="demo.html" name="top" scrolling="NO" noresize>
  <frameset cols="210,*" name="main" frameborder="Yes" border="2" framespacing="0">
    <frame src="demo.html" name="left" scrolling="auto">
    <frame src="demo.html" name="right" scrolling="yes">
  </frameset>
</frameset>
這樣會報錯,關也關不掉!!demo.html 是直接用LZ的附件!
69 楼 zhoche2008 2009-12-25  
$.funkyUI问题列表:
1.弹出窗口中的输入框有时候不让输入,无法获得信息【除非按tab键后】
2.应该追加回调函数
3.支持传参
4.确认按纽和取消按纽下面的工具条应该允许调用者不显示
68 楼 zhoche2008 2009-12-22  
这是我目前找到的最好的IE弹出窗口的例子,很好很强大,不过还有点不足:弹出窗口的右上角的关闭按纽,有点超出窗口范围了
67 楼 zhoche2008 2009-12-22  
太牛比了,正是我需要的,谢谢
66 楼 bing8848 2009-12-17  
不支持动态页面PHP?
65 楼 xuanye 2009-10-26  
mlw2000 写道
	function block(){
		if($.confirm("你是男性吗?")){
			if($.confirm("你大于22岁吗?")){
				alert("你符合法定结婚年龄限制");
			}else{
				alert("你不符合法定结婚年龄限制");
			}
		}else{
			if($.confirm("你大于20岁吗?")){
				alert("你符合法定结婚年龄限制");
			}else{
				alert("你不符合法定结婚年龄限制");
			}
		}
	}


难道真的找不到一种可以优雅的替代window.confirm()函数的方法?????

因为Js不是多线程的,没有办法阻塞(只有alert,confirm,模态对话框),如果要替换confirm只能模拟那个样子,但是不能阻止js往下执行,所以应该要用回调函数来实现,和原来的估计是不一样的
64 楼 climber 2009-10-25  
有一些BUG,不过还不错,期待改进中
63 楼 lovelong1 2009-10-23  
BUG很多,多窗体关闭有bug
62 楼 jacki6 2009-10-01  
可以再加入点东西,比如像弹出登陆窗口之类,对div的支持(我自己加了),窗口随父窗口纵向滚动条的滚动,这个效果也蛮不错的(我看了下代码,没加成功)
61 楼 jacki6 2009-10-01  
magus0803 写道
楼主,这个东东很有帮助,不过我发现一个问题
在IE6下打开模态窗口,横向和纵向的滚动条就出来了。。然后滚动过去就没有被遮蔽。
在firefox3.5.2下没问题这个问题

就是,目前正在使用,其他效果都不错,就是这个问题,麻烦楼主看看
60 楼 mlw2000 2009-09-28  
	<script type="text/javascript">
    window.alert=$.alert;
	function showAlert(){
        alert(111);
        alert(222);
	}
	</script>


效果不错,但达不到替换window的原生alert的效果,如上
59 楼 xiangkun 2009-09-27  
问题:弹出框后,遮罩层并没有将当前页面所有内容进行覆盖,我的意思是,当前页面有多大,遮罩层就多大。。。


期待LZ下个版本解决这些问题啊!!
58 楼 me- 2009-09-18  
建议在chromium下测试 感觉对jquery js的支持比IE系列的好太多
57 楼 me- 2009-09-18  
第二个弹出框连续点击"取消"两次会把父窗口也关闭的的bug好象没修改过
56 楼 squall140 2009-09-18  
感觉真的是不错,完美的和jQUery整合!
55 楼 weigphf 2009-09-14  
tkl211 写道
我下载了例子,运行没问题,但是把这些放到程序里,就出问题了,所用到的包,都是正确的,提示:topWin.$.DialogData 为空或不是对象,就弹不出来了

我也有同样的错误。。。
54 楼 qkjava 2009-09-07  
在frameset里面用会报
topWin.$.DialogData找不到错。
结合我自己用到的frameset将以上改为
topWin.frames["mainIcdFrame"].$.DialogData。

改进意见:对于该控件在frame中的应用值得改进。
53 楼 kanny87929 2009-08-18  
楼主的根据jQuery blockUI 来的
我现在的项目基本项目里都用的是这个插件

相关推荐

    封装JQuery Dialog实现Dialog、Tip、alert和confirm

    在IT行业中,jQuery Dialog是一种广泛使用的插件,用于创建弹出式对话框,提示框,警告框和确认框。这个“封装JQuery Dialog实现Dialog、Tip、alert和confirm”的主题聚焦于如何通过自定义代码来封装jQuery Dialog的...

    弹出窗口

    5. **异步通知**:在Web开发中,JavaScript的`alert`、`prompt`和`confirm`函数可以创建弹出窗口,但现代Web应用更倾向于使用`Promise`或`async/await`处理异步操作,如`Toast`通知或自定义模态框。 6. **库和框架*...

    Jquery样式化Alert

    可以将对话框内容封装在模态窗口(modal)中,使用CSS控制其显示和隐藏。 - 使用jQuery的`.on()`和`.off()`方法来绑定和解绑事件,确保对话框在正确的时间显示和关闭。 - 利用jQuery的动画效果(如`.fadeIn()`和`....

    jQueryAlert

    总结来说,"jQueryAlert"是一种利用jQuery实现的自定义提示对话框技术,它允许开发者摆脱浏览器默认对话框的限制,创造出更符合设计风格和用户习惯的确认与警告机制。通过HTML结构、CSS样式以及jQuery事件处理的结合...

    jQuery实现鼠标拖拽确认对话框弹出层特效源码.zip

    在本项目中,可能使用了`alert()`、`confirm()`或者自定义的模态对话框来实现这一功能。`confirm()`函数会弹出一个带有确定和取消按钮的对话框,根据用户的选择返回布尔值,这在需要用户确认是否离开页面时非常有用...

    jQuery EasyUI封装简化操作

    这些封装函数使得开发者在使用 jQuery EasyUI 时更加便捷,能够快速创建交互式的对话框、加载提示和窗口。它们降低了开发复杂度,提高了代码的可读性和可维护性,使得开发者可以更专注于业务逻辑而不是界面的实现...

    html弹出框

    在描述中提到,你已经用jQuery实现了一个自定义的弹出框,并且只需引入相关的CSS和JS文件,就能在页面上轻松调用这个功能。这表明你可能创建了一个自定义组件,它具有一定的可复用性和易用性。 首先,让我们来了解...

    超级漂亮的js弹出框效果

    使用媒体查询(media queries)和百分比单位可以实现弹出框在不同屏幕大小下的良好展示。 6. **插件和库**:有许多优秀的JavaScript库,如jQuery UI、SweetAlert、Bootbox.js等,它们提供了预设的弹出框样式和功能...

    jQuery弹框

    为了提高代码复用性和灵活性,许多开发者会选择使用现成的jQuery弹框插件,如jQuery UI的Dialog、bootstrap的Modal或SweetAlert2等。这些插件提供了丰富的配置选项和预设样式,可以快速集成到项目中,满足不同需求。...

    jquery-easyui-1.3.5

    jQuery EasyUI是基于jQuery的,因此理解jQuery的基本概念和语法是使用EasyUI的前提。 `EasyUI` 是一套基于jQuery的插件集合,它提供了一系列的UI组件,如对话框、表格、树形结构、表单验证、菜单等。这些组件都是...

    漂亮的js弹出框

    在JavaScript中,有几种常见的弹出框:`alert()`、`prompt()`和`confirm()`。这些内置函数简单易用,但样式单一,无法满足定制化需求。而"漂亮的js弹出框"则通过自定义代码实现了更加美观和功能丰富的弹出效果。 1....

    jQuery动画弹出确认框和警告框

    在网页开发中,jQuery库因其简洁的语法和强大的功能,被广泛用于实现各种交互效果,包括弹出对话框。本文将深入探讨如何使用jQuery来创建动画化的确认框和警告框,以此提供更丰富的用户体验。 首先,jQuery确认框...

    开发中经常用的图片和JS弹出框

    一些流行库如jQuery UI和SweetAlert提供了封装好的弹出框组件,方便快速实现此类功能。 在博文链接中,作者可能详细介绍了如何在项目中实现图片的优化加载和自定义JavaScript弹出框的创建过程,包括可能遇到的问题...

    jsWeb弹出框无依赖包括AlertConfirmToastLoadingNotifyModal

    本资源"jsWeb弹出框无依赖包括AlertConfirmToastLoadingNotifyModal"提供了一套完整的解决方案,无需依赖任何外部库,如jQuery或其他前端框架,使得开发者能够在纯JavaScript环境下方便地实现各种弹出框效果。...

    基于jquery的finkyUI插件与Ajax实现页面数据加载功能

    标题和描述中提到的知识点为使用jQuery以及finkyUI插件结合Ajax技术实现页面数据加载功能。finkyUI是一个基于jQuery的前端UI插件,它可以提供丰富的前端页面交互效果,如模态窗口、确认框、加载遮罩等。为了深入理解...

    jquery封装的对话框简单实现

    本篇文章将重点介绍如何使用jQuery来封装一个简单的对话框功能,这对于在网页中弹出提示、确认、错误或警告信息是非常实用的。 首先,我们定义了一些常量,用于表示不同类型的对话框图标样式,例如`_alert_iconCss`...

    Bootstrap3 插件.pdf_前端学习资料

    7. **EasyModal**:EasyModal 是一个基于 Bootstrap 的模态框扩展插件,提供了更多自定义功能,如 alert、confirm 和 prompt。使用方法如 `EasyModal.alert(msg, [callback, title, btnTextArray, params])`。 8. *...

    表示层操作提示Js弹窗类

    因此,对于需要更多用户交互或更复杂反馈的情况,开发者可能会选择使用`prompt()`或`confirm()`函数,或者使用更先进的UI库,如jQuery UI、Bootstrap的模态对话框,甚至Vue.js、React.js等现代前端框架提供的组件。...

    js和人机交互.rar

    6. **模态框和提示**:通过JavaScript,我们可以创建模态窗口或弹出提示,向用户提供信息或确认操作。例如,`alert()`、`confirm()`和`prompt()`是基本的对话框函数。 7. **路由管理**:在单页应用(SPA)中,...

Global site tag (gtag.js) - Google Analytics