基于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 相关文章推荐
用jquery和json从后台获得数据集的代码
Nov 07 Javascript
jQuery仿Excel表格编辑功能的实现代码
May 01 Javascript
js window.print实现打印特定控件或内容
Sep 16 Javascript
javascript中的nextSibling使用陷(da)阱(keng)
May 05 Javascript
jQuery验证插件 Validate详解
Nov 20 Javascript
js+html5绘制图片到canvas的方法
Jun 05 Javascript
JavaScript学习笔记整理之引用类型
Jan 22 Javascript
React.js中常用的ES6写法总结(推荐)
May 09 Javascript
easyui下拉框动态级联加载的示例代码
Nov 29 Javascript
用npm安装vue和vue-cli,并使用webpack创建项目的方法
Sep 28 Javascript
Node.js 如何利用异步提升任务处理速度
Jan 07 Javascript
js module大战
Apr 19 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
PHP写杨辉三角实例代码
2011/07/17 PHP
PHP会话处理的10个函数
2015/08/11 PHP
php生成毫秒时间戳的实例讲解
2017/09/22 PHP
微信企业转账之入口类分装php代码
2018/10/01 PHP
载入进度条 效果
2006/07/08 Javascript
JavaScript的事件绑定(方便不支持js的时候)
2013/10/01 Javascript
js 判断浏览器使用的语言示例代码
2014/03/22 Javascript
js 通过cookie实现刷新不变化树形菜单
2014/10/30 Javascript
jQuery使用正则表达式限制文本框只能输入数字
2016/06/18 Javascript
详解nodejs微信公众号开发——2.自动回复
2017/04/10 NodeJs
深究AngularJS中$sce的使用
2017/06/12 Javascript
webpack4.0打包优化策略整理小结
2018/03/30 Javascript
es6 filter() 数组过滤方法总结
2019/04/03 Javascript
axios 实现post请求时把对象obj数据转为formdata
2019/10/31 Javascript
js实现简单点赞操作
2020/03/17 Javascript
[10:42]Team Liquid Vs Newbee
2018/06/07 DOTA
linux系统使用python获取cpu信息脚本分享
2014/01/15 Python
python里对list中的整数求平均并排序
2014/09/12 Python
Python中Selenium模拟JQuery滑动解锁实例
2017/07/26 Python
[原创]pip和pygal的安装实例教程
2017/12/07 Python
python实现微信跳一跳辅助工具步骤详解
2018/01/04 Python
Python回文字符串及回文数字判定功能示例
2018/03/20 Python
pandas取出重复数据的方法
2019/07/04 Python
python写入文件自动换行问题的方法
2019/07/05 Python
使用Pyhton集合set()实现成果查漏的例子
2019/11/24 Python
PyTorch中的padding(边缘填充)操作方式
2020/01/03 Python
From CSV to SQLite3 by python 导入csv到sqlite实例
2020/02/14 Python
最小二乘法及其python实现详解
2020/02/24 Python
浅析python中的del用法
2020/09/02 Python
基于DOM+CSS3实现OrgChart组织结构图插件
2016/03/02 HTML / CSS
雅诗兰黛旗下走天然植物路线的彩妆品牌:Prescriptives
2016/08/14 全球购物
加拿大的标志性百货公司:Hudson’s Bay(哈得逊湾)
2019/09/03 全球购物
函数指针的定义是什么
2016/08/14 面试题
OLEDBConnection和SQLConnection有什么区别
2013/05/31 面试题
美容师的职业规划书
2013/12/27 职场文书
办公室领导干部作风整顿个人整改措施
2014/09/17 职场文书