基于jQuery的弹出警告对话框美化插件(警告,确认和提示) |
本文标签:警告,确认,提示,对话框 前不久在官方网站是看见这个插件,所以今天趁有空就看了一下,随便给大家共享一下 。也许你早已知道了 ,如果是这样那请跳过,不要拍砖 。 这个Jquery插件的目的是替代JavaScript的标准函数alert(),confirm(),和 prompt() 。这个插件有 如下这些特点: 1:这个插件可以使你可以支持你自己的css制定 。使你的网站看起来更专业 。 2:允许你自定义对话框的标题 。 3:在IE7中,可以使你避免使用JavaScript 的prompt()函数带来的页面重新加载 。 4:这些方法都模拟了Windows的模式对话框 。在你改变改变浏览器窗口大小时候,它能够自适应用户 窗口的调整 。 5:如果你引入了jQuery UI Draggable plugin插件,那这个插件也可以被自由拖动 。 先在这里说插件的下载地址,以供有需之人下载: http://labs.abeautifulsite.net/projects/js/jquery/alerts/jquery.alerts-1.1.zip 一:首先在<head></head>导入JQuery,jquery.ui.draggable 和jquery.alerts的 css、js文件 。 <script src="/path/to/jquery.js" type="text/javascript"></script> <script src="/path/to/jquery.ui.draggable.js" type="text/javascript"></script> <script src="/path/to/jquery.alerts.js" type="text/javascript"></script> <link href="/path/to/jquery.alerts.css" rel="stylesheet" type="text/css" media="screen" /> 为了在iE中正确的使用alert插件,你还得在Page中加入何时DTD: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" " http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 二:使用 我们可以用下列方式来使用这个Jquery插件 。 jAlert(message, [title, callback]) jConfirm(message, [title, callback]) jPrompt(message, [value, title, callback]) 注:不同于Javascript标准函数,我们可以在message中使用HTML参数显示你的提示信息 。 三:兼容性: alert插件要求我们必须使用JQuery1.2.6或以上的jQuery包 。 已经被测试能够在IE6、IE7、FF2、FF3、Safari 3 、Chrome 、Opera 9浏览器上很好的运行 。 四:Demo:注:在Demo中么有引入dragonable插件所以不能拖拽 Test Alert 复制代码 代码如下: jAlert(This is a custom alert box; <a href=\"http://www.cnblogs.com/whitewolf/\"> 本示例来自破浪博客</a>, Alert Dialog); Test Confirm 复制代码 代码如下: jConfirm(Can you confirm this? <a href=\"http://www.cnblogs.com/whitewolf/\"> 本示例来自破浪博客</a>, Confirmation Dialog, function(r) { jAlert(Confirmed: + r, Confirmation Results); }); Test Prompt 复制代码 代码如下: jPrompt(Type something:< a href=\"http://www.cnblogs.com/whitewolf/\"> 本示例来自破浪博客</a>, WhiteWolf, Prompt Dialog, function(r) { if( r ) alert(You entered + r); }); 关于jConfirm回传的解决方案 我趁今天有空就考虑了下 。我觉得lastwinter问这个问题应该是关于ASP.NET的回传问题,这主要是jConfirm这个为CallBack回调, 他是异步的,并非同步 。 所以我尝试了下阻止事件的冒泡,并当选择为true是自动回传 。用LinkButton测试(Button不同于这个解决的方案在后面解释) 现贴出LinkButton的CODE DEMO: 关于jConfirm回传DEMO 复制代码 代码如下: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> <script src="Script/jquery-1.3.2.min.js" type="text/javascript"></script> <script src="Script/jquery.alerts-1.1/jquery.alerts.js" type="text/javascript"></script> <link href="Script/jquery.alerts-1.1/jquery.alerts.css" rel="stylesheet" type="text/css" /> </head> <body> <form id="form1" runat="server"> <asp:LinkButton ID="LinkButton1" runat="server" onclick="Button1_Click" >LinkButton</asp:LinkButton> <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label> <div> </div> </form> <script type="text/javascript"> $(document).ready(function() { $("#<%=LinkButton1.ClientID %>").click(function(event) { jConfirm("test", "test jconfirm", function(r) { if (r) { <%= Page.ClientScript.GetPostBackClientHyperlink(LinkButton1,"") %> } }); event.stopPropagation(); event.preventDefault(); }); }); </script> </body> </html> LinkButton1 Button Click CODE 复制代码 代码如下: protected void Button1_Click(object sender, EventArgs e) { this.Label1.Text = DateTime.Now.ToString(); } 主要为先阻止事件的冒泡event.stopPropagation();event.preventDefault(); 在jConfirm的callback回调函数中判断是否需要回传, <%= Page.ClientScript.GetPostBackClientHyperlink(LinkButton1,"") %>;; 点击LinkButton1是效果为: ![]() 点击Cancel时候就不会回传,当ok时候就会发生回传更新时间: ![]() 对于我们的LinkButton的实现是在输出的客户端Html代码有脚本自动回传,而Button这是HTML元素submit,提交, 所以在这两个的区别下,LinkButton就多了几处javascript 代码: 复制代码 代码如下: <script type="text/javascript"> //<![CDATA[ var theForm = document.forms[form1]; if (!theForm) { theForm = document.form1; } function __doPostBack(eventTarget, eventArgument) { if (!theForm.onsubmit || (theForm.onsubmit() != false)) { theForm.__EVENTTARGET.value = eventTarget; theForm.__EVENTARGUMENT.value = eventArgument; theForm.submit(); } } //]]> </script> 和 input Hidden 复制代码 代码如下: <input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" /> <input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" /> 上面所说的意思就是如果要用Button实现同样的示例,我们必须保证我的输出客户端的代码有这些回传脚本注册,还有就是回传为 <%=Page.ClientScript.GetPostBackEventReference(Button1,"") %> 。所以我觉得用LinkButton更适合 。 |