基于jQuery的弹出框插件


Posted in Javascript onMarch 18, 2012

html如下:

<!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> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<script type="text/javascript" src="jquery-1.7.min.js"></script> 
<script type="text/javascript" src="jquery-1.0.popwin.js"></script> 
<script type="text/javascript"> 
$(function() { 
$("#btn01").popwin({ 
element: "#box01", 
title: "请填写以下您的基本信息" 
}); 
$("#btn02").popwin({ 
element: "#box02", 
title: "请登陆" 
}); 
}) 
</script> 
<title>DEMO</title> 
</head> 
<body> 
<div id="box01"> 
<form action="" method="post" onsubmit="return check();"> 
姓名: 
<input type="text" size="30" name="username" id="username" onblur="return check();" value="" /><span id="nameErr"></span> 
<br /> 
<br /> 
密码: 
<input type="password" size="30" name="password" onblur="return check();" id="password" value="" /><span id="passwordErr"></span> 
<br /> 
<br /> 
邮箱: 
<input type="text" size="30" id="email" value="" onblur="return check();" /><span id="emailErr"></span> 
<br /> 
<br /> 
<input type="submit" value="确定" /> 
<input type="reset" value="取消" /> 
</form> 
</div> 
<div id="box02"> 
<form action="" method="post"> 
姓名: 
<input type="text" size="30" value="" /> 
<br /> 
<br /> 
密码: 
<input type="password" size="30" value="" /> 
<br /> 
<br /> 
<input type="submit" value="确定" /> 
<input type="reset" value="取消" /> 
</form> 
</div> 
<button value="注册" id="btn01">注册</button> 
<button value="登陆" id="btn02">登陆</button> 
</body> 
</html>

js插件如下:
/* 
* jquery.popwin.js 1.0 
* Copyright (c) gaoyubao 
* Date: 2012-01-12 
* 1.点击按钮,可以弹出你想弹出的内容,只要设置一下id,或者class 
2.浏览器窗口缩小的时候,弹出框始终是居中的 
3.按ESC间,可以关闭窗口 
*/ 
(function($) { 
var css='<style type="text/css">* {margin: 0;padding: 0;}#bg{background-color: #000; position: absolute; left:0; top:0;opacity: 0.5;filter:alpha(opacity=50);} #flagBox {position: absolute;border: 1px solid #000;background-color: #fff;z-index:2000;}#titleBox {padding: 5px;background-color:#fc0; overflow:hidden;} #titleBox p {font-weight: bold;} #titleBox a {float: right;} #htmlCode {padding: 10px;} span {font-size: 12px; color: #f00; margin-left: 10px;}</style>'; 
$("head").append(css); 
$.fn.popwin= function(options) { 
var settings={ 
element: "element", //哪一个弹出框,可以是id,或者是class 
width: 400, 
height: 200, 
title: "title" //弹出框的title 
} 
var s=$.extend(settings,options); 
var htmlCode=$(s.element).html(); 
$(s.element).remove(); 
$.a={ 
//设置背景的宽和高 
setBg: function() { 
var bh=$("body").height(),wh=$(window).height(),ww=$(window).width(); 
if(bh>wh) { 
wh=bh; 
} 
$("#bg").css({ 
width: ww, 
height: wh 
}); 
}, 
//设置弹出框居中 
setFlag: function() { 
var l=(document.documentElement.clientWidth-s.width)/2+"px", 
t=(document.documentElement.clientHeight-s.height)/2+"px"; 
$("#flagBox").css({ 
width: s.width, 
height: s.height, 
left: l, 
top: t 
}); 
}, 
//弹出框关闭 
setClose: function() { 
$("#container").remove(); 
} 
}; 
var html='<div id="container"><div id="bg"></div><div id="flagBox"><div id="titleBox"><a href="javascript:void(0)">close</a><p>'+s.title+'</p></div><div id="htmlCode">'+htmlCode+'</div></div></div>'; 
$(window).resize(function() {//调解窗口的大小 
$.a.setFlag(); 
}); 
return this.each(function() { 
$(this).bind("click",function(){ 
$("body").append(html); 
$("#titleBox a").click(function() { 
$.a.setClose(); 
}); 
$.a.setBg(); 
$.a.setFlag(); 
}); 
$(document).keydown(function(event) { 
if(event.which=="27") { 
$.a.setClose(); 
} 
}); 
}); 
}; 
})(jQuery) 
function isEmail(str) { 
var reg = /^([a-zA-Z0-9_-])+@+([a-zA-Z0-9_-])+(\.[a-zA-Z0-9_-])/; 
if(reg.exec(str)) { 
return false; 
}else { 
return true; 
} 
} 
function check() { 
var flag=true; 
$("#nameErr").html(''); 
$("#passwordErr").html(''); 
$("#emailErr").html(''); 
var username=$("#username").val(); 
var password=$("#password").val(); 
var email=$("#email").val(); 
if(username=="" || username==null) { 
$("#nameErr").html("姓名不能为空"); 
flag=false; 
} 
if(password=="") { 
$("#passwordErr").html("密码不能为空"); 
flag=false; 
} 
if(email=="") { 
$("#emailErr").html("邮箱不能为空"); 
flag=false; 
}else if(isEmail(email)) { 
$("#emailErr").html("邮箱格式错误"); 
flag=false; 
} 
return flag; 
}
Javascript 相关文章推荐
JavaScript插入动态样式实现代码
Feb 22 Javascript
JavaScript 布尔操作符解析  &amp;&amp; || !
Aug 10 Javascript
JavaScript设计模式之单件模式介绍
Dec 28 Javascript
Node.js抓取中文网页乱码问题和解决方法
Feb 10 Javascript
javascript原型模式用法实例详解
Jun 04 Javascript
JavaScript中数据结构与算法(四):串(BF)
Jun 19 Javascript
微信小程序开发(一) 微信登录流程详解
Jan 11 Javascript
Angularjs过滤器实现动态搜索与排序功能示例
Dec 13 Javascript
浅谈vue同一页面中拥有两个表单时,的验证问题
Sep 18 Javascript
Vue 框架之动态绑定 css 样式实例分析
Nov 14 Javascript
es6基础学习之解构赋值
Dec 10 Javascript
javascript解析json格式的数据方法详解
Aug 07 Javascript
js性能优化 如何更快速加载你的JavaScript页面
Mar 17 #Javascript
Jquery命名冲突解决的五种方案分享
Mar 16 #Javascript
让人期待的2011年度最佳 jQuery 插件分享
Mar 16 #Javascript
JavaScript异步调用定时方法并停止该方法实现代码
Mar 16 #Javascript
使用Jquery Aajx访问WCF服务(GET、POST、PUT、DELETE)
Mar 16 #Javascript
jquery $.ajax相关用法分享
Mar 16 #Javascript
灵活应用js调试技巧解决样式问题的步骤分享
Mar 15 #Javascript
You might like
教你如何把一篇文章按要求分段
2006/10/09 PHP
php获得文件扩展名三法
2006/11/25 PHP
PHPEXCEL 使用小记
2013/01/06 PHP
php 截取GBK文档某个位置开始的n个字符方法
2017/03/08 PHP
php+resumablejs实现的分块上传 断点续传功能示例
2017/04/18 PHP
phpQuery采集网页实现代码实例
2020/04/02 PHP
php命令行模式代码实例详解
2021/02/26 PHP
Code: write(s,d) 输出连续字符串
2007/08/19 Javascript
简略的前端架构心得&amp;&amp;基于editor为例子的编码小技巧
2010/11/25 Javascript
JavaScript自定义事件介绍
2013/08/29 Javascript
LABjs、RequireJS、SeaJS的区别
2014/03/04 Javascript
javascript的switch用法注意事项分析
2015/02/02 Javascript
js点击列表文字对应该行显示背景颜色的实现代码
2015/08/05 Javascript
js钢琴按钮波浪式图片排列效果代码分享
2015/08/26 Javascript
js和jquery实现监听键盘事件示例代码
2020/06/24 Javascript
jquery按回车键实现表单提交的简单实例
2016/05/25 Javascript
深入解析JavaScript中的arguments对象
2016/06/12 Javascript
jQuery实现简单倒计时功能的方法
2016/07/04 Javascript
jQuery元素属性操作实例(设置、获取及删除元素属性)
2016/09/08 Javascript
利用JS实现文字的聚合动画效果
2017/01/22 Javascript
JS实现的tab切换选项卡效果示例
2017/02/28 Javascript
JavaScript对象_动力节点Java学院整理
2017/06/23 Javascript
nodejs实现超简单生成二维码的方法
2018/03/17 NodeJs
jQuery实现的点击标题文字切换字体效果示例【测试可用】
2018/04/26 jQuery
vue.js中ref和$refs的使用及示例讲解
2019/08/14 Javascript
vue 父组件通过v-model接收子组件的值的代码
2019/10/27 Javascript
js实现百度登录窗口拖拽效果
2020/03/19 Javascript
es6函数之箭头函数用法实例详解
2020/04/25 Javascript
正确理解python中的关键字“with”与上下文管理器
2017/04/21 Python
Python 中 sorted 如何自定义比较逻辑
2021/02/02 Python
手工制作的意大利礼服鞋:Ace Marks
2018/12/15 全球购物
公积金单位接收函
2014/01/11 职场文书
小学生运动会报道稿
2014/09/12 职场文书
开票证明
2015/06/23 职场文书
解决MySQL报“too many connections“错误
2022/04/19 MySQL
JS实现页面炫酷的时钟特效示例
2022/08/14 Javascript