* {margin:0;}
body {font-size:12px;}
#container div{margin-top:5px;}
#select_city h3{float:left;}
#main_city,#all_province {clear:both;}
#main_city div,#all_province div{width:600px;clear:left;}
#main_city h4,#all_province h4{float:left;display:inline;font-size:16px;}
#main_city div span,#all_province div span{margin:0 10px;cursor:pointer;font-size:12px;}
#float_lay{width:200px;height:120px;border:1px #d1d1d1 solid;position:absolute;background:#fff;z-index:999;display:none;}
//弹出层
function openlayer()
{
//创建一个div元素
var popupdiv = document.createelement("div");
//给这个元素设置属性与样式
popupdiv.setattribute("id","popupaddr")
popupdiv.style.border = "1px solid #ccc";
popupdiv.style.width = "600px";
popupdiv.style.height = "400px";
popupdiv.style.background = "#fff";
popupdiv.style.zindex = 99;
popupdiv.style.position = "absolute";
//让弹出层在页面中垂直左右居中
var arraypagesize = getpagesize();
var arraypagescroll = getpagescroll();
//alert(arraypagescroll);
//alert(arraypagesize);
popupdiv.style.top = (arraypagescroll[1] + ((arraypagesize[3] - 35 - 400) / 2) + 'px') ;
popupdiv.style.left = (((arraypagesize[0] - 20 - 600) / 2) + 'px');
//创建背景层
var bodyback = document.createelement("div");
bodyback.setattribute("id","bodybg")
bodyback.style.width = "100%";
bodyback.style.height = (arraypagesize[1] + 35 + 'px');
bodyback.style.zindex = 98;
bodyback.style.position = "absolute";
bodyback.style.top = 0;
bodyback.style.left = 0;
bodyback.style.filter = "alpha(opacity=20)";
bodyback.style.opacity = 0.2;
bodyback.style.background = "#000";
//收工插入到目标元素之后
var mybody = document.getelementbyid("test");
insertafter(popupdiv,mybody);
insertafter(bodyback,mybody);
//弹出层内容
popupdiv.innerhtml = addrhtml();
init_check();
init_check_event();
}
//元素插入另一个元素之后
function insertafter(newelement, targetelement)
{
var parent = targetelement.parentnode;
if(parent.lastchild == targetelement)
{
parent.appendchild(newelement);
}
else
{
parent.insertbefore(newelement, targetelement.nextsibling);
}
}
//获取滚动条的高度
function getpagescroll(){
var yscroll;
if (self.pageyoffset) {
yscroll = self.pageyoffset;
} else if (document.documentelement && document.documentelement.scrolltop){ // explorer 6 strict
yscroll = document.documentelement.scrolltop;
} else if (document.body) {// all other explorers
yscroll = document.body.scrolltop;
}
arraypagescroll = new array('',yscroll)
return arraypagescroll;
}
//获取页面实际大小
function getpagesize(){
var xscroll, yscroll;
if (window.innerheight && window.scrollmaxy) {
xscroll = document.body.scrollwidth;
yscroll = window.innerheight + window.scrollmaxy;
} else if (document.body.scrollheight > document.body.offsetheight){ // all but explorer mac
xscroll = document.body.scrollwidth;
yscroll = document.body.scrollheight;
} else { // explorer mac...would also work in explorer 6 strict, mozilla and safari
xscroll = document.body.offsetwidth;
yscroll = document.body.offsetheight;
}
var windowwidth, windowheight;
if (self.innerheight) { // all except explorer
windowwidth = self.innerwidth;
windowheight = self.innerheight;
} else if (document.documentelement && document.documentelement.clientheight) { // explorer 6 strict mode
windowwidth = document.documentelement.clientwidth;
windowheight = document.documentelement.clientheight;
} else if (document.body) { // other explorers
windowwidth = document.body.clientwidth;
windowheight = document.body.clientheight;
}
// for small pages with total height less then height of the viewport
if(yscroll < windowheight){
pageheight = windowheight;
} else {
pageheight = yscroll;
}
// for small pages with total width less then width of the viewport
if(xscroll < windowwidth){
pagewidth = windowwidth;
} else {
pagewidth = xscroll;
}
arraypagesize = new array(pagewidth,pageheight,windowwidth,windowheight)
return arraypagesize;
}
//关闭弹出层
function closelayer(obj)
{
obj.style.display = "none";
document.getelementbyid("bodybg").style.display = "none";
return false;
}
//拖动函数
function mousedown(e)
{
var obj = document.getelementbyid("popupaddr");
var e = window.event ? window.event : e;
obj.startx = e.clientx - obj.offsetleft;
obj.starty = e.clienty - obj.offsettop;
document.onmousemove = mousemove;
var temp = document.attachevent ? document.attachevent("onmouseup",mouseup) : document.addeventlistener("mouseup",mouseup,"");
}
function mousemove(e)
{
var obj = document.getelementbyid("popupaddr");
var e = window.event ? window.event : e;
with(obj.style)
{
left = e.clientx - obj.startx + "px";
top = e.clienty - obj.starty + "px";
}
}
function mouseup(e)
{
document.onmousemove = "";
var temp = document.detachevent ? document.detachevent("onmouseup",mouseup) : document.addeventlistener("mouseup",mouseup,"");
}
//end拖动函数
//弹出层内容
function addrhtml() {
//文字
var title = "请选择工作地点 你最多能选择 5 项";
var close = '[确定]';
//图片地址
var titlebg = "http://www.qqdang.net/code/title_bg.gif";
var icn = "http://www.qqdang.net/code/icn.gif";
var htmldiv = '';
htmldiv += '';
//头部
htmldiv += '';
htmldiv += '';
htmldiv += title;
htmldiv += '';
htmldiv += '';
htmldiv += close;
htmldiv += '';
htmldiv += '';
//end头部
//内容部分
htmldiv += '';
htmldiv += '';
//end内容部分
htmldiv += '';
return htmldiv;
}
//工作地点键值匹配数组
var ja=[];
ja['0100']='北京市';
ja['0200']='上海市';
ja['0300']='广东省';ja['0302']='广州市';ja['0303']='惠州市';ja['0304']='汕头市';ja['0305']='珠海市';ja['0306']='佛山市';ja['0307']='中山市';ja['0308']='东莞市';ja['0310']='从化市';ja['0314']='韶关市';ja['0315']='江门市';ja['0316']='增城市';ja['0317']='湛江市';ja['0318']='肇庆市';ja['0319']='清远市';ja['0320']='潮州市';ja['0321']='河源市';ja['0322']='揭阳市';ja['0323']='茂名市';ja['0324']='汕尾市';ja['0325']='顺德市';
ja['0400']='深圳市';
ja['0500']='天津市';
ja['0600']='重庆市';
ja['0700']='江苏省';ja['0702']='南京市';ja['0703']='苏州市';ja['0704']='无锡市';ja['0705']='常州市';ja['0706']='昆山市';ja['0707']='常熟市';ja['0708']='扬州市';ja['0709']='南通市';ja['0710']='镇江市';ja['0711']='徐州市';ja['0712']='连云港市';ja['0713']='盐城市';ja['0714']='张家港市';
ja['0800']='浙江省';ja['0802']='杭州市';ja['0803']='宁波市';ja['0804']='温州市';ja['0805']='绍兴市';ja['0806']='金华市';ja['0807']='嘉兴市';ja['0808']='台州市';ja['0809']='湖州市';ja['0810']='丽水市';ja['0811']='舟山市';ja['0812']='衢州市';
ja['0900']='四川省';ja['0902']='成都市';ja['0903']='绵阳市';ja['0904']='乐山市';ja['0905']='泸州市';ja['0906']='德阳市';ja['0907']='宜宾市';ja['0908']='自贡市';ja['0909']='内江市';ja['0910']='攀枝花市';
ja['1000']='海南省';ja['1002']='海口市';ja['1003']='三亚市';
ja['1100']='福建省';ja['1102']='福州市';ja['1103']='厦门市';ja['1104']='泉州市';ja['1105']='漳州市';ja['1106']='莆田市';ja['1107']='三明市';ja['1108']='南平市';ja['1109']='宁德市';ja['1110']='龙岩市';
ja['1200']='山东省';ja['1202']='济南市';ja['1203']='青岛市';ja['1204']='烟台市';ja['1205']='潍坊市';ja['1206']='威海市';ja['1207']='淄博市';ja['1208']='临沂市';ja['1209']='济宁市';ja['1210']='东营市';ja['1211']='泰安市';ja['1212']='日照市';ja['1213']='德州市';
ja['1300']='江西省';ja['1302']='南昌市';ja['1303']='九江市';
ja['1400']='广西';ja['1402']='南宁市';ja['1403']='桂林市';ja['1404']='柳州市';ja['1405']='北海市';
ja['1500']='安徽省';ja['1502']='合肥市';ja['1503']='芜湖市';ja['1504']='安庆市';ja['1505']='马鞍山市';ja['1506']='蚌埠市';ja['1507']='阜阳市';ja['1508']='铜陵市';ja['1509']='滁州市';ja['1510']='黄山市';ja['1511']='淮南市';ja['1512']='六安市';ja['1513']='巢湖市';ja['1514']='宣城市';ja['1515']='池州市';
ja['1600']='河北省';ja['1602']='石家庄市';ja['1603']='廊坊市';ja['1604']='保定市';ja['1605']='唐山市';ja['1606']='秦皇岛市';
ja['1700']='河南省';ja['1702']='郑州市';ja['1703']='洛阳市';ja['1704']='开封市';
ja['1800']='湖北省';ja['1802']='武汉市';ja['1803']='宜昌市';ja['1804']='黄石市';ja['1805']='襄樊市';ja['1806']='十堰市';ja['1807']='荆州市';ja['1808']='荆门市';ja['1809']='孝感市';ja['1810']='鄂州市';
ja['1900']='湖南省';ja['1902']='长沙市';ja['1903']='株洲市';ja['1904']='湘潭市';ja['1905']='衡阳市';ja['1906']='岳阳市';ja['1907']='常德市';ja['1908']='益阳市';ja['1909']='郴州市';ja['1910']='邵阳市';ja['1911']='怀化市';ja['1912']='娄底市';ja['1913']='永州市';ja['1914']='张家界市';
ja['2000']='陕西省';ja['2002']='西安市';ja['2003']='咸阳市';ja['2004']='宝鸡市';ja['2005']='铜川市';ja['2006']='延安市';
ja['2100']='山西省';ja['2102']='太原市';ja['2103']='运城市';ja['2104']='大同市';ja['2105']='临汾市';
ja['2200']='黑龙江省';ja['2202']='哈尔滨市';ja['2203']='伊春市';ja['2204']='绥化市';ja['2205']='大庆市';ja['2206']='齐齐哈尔市';ja['2207']='牡丹江市';ja['2208']='佳木斯市';
ja['2300']='辽宁省';ja['2302']='沈阳市';ja['2303']='大连市';ja['2304']='鞍山市';ja['2305']='营口市';ja['2306']='抚顺市';ja['2307']='锦州市';ja['2308']='丹东市';ja['2309']='葫芦岛市';ja['2310']='本溪市';ja['2311']='辽阳市';ja['2312']='铁岭市';
ja['2400']='吉林省';ja['2402']='长春市';ja['2403']='吉林市';ja['2404']='辽源市';ja['2405']='通化市';
ja['2500']='云南省';ja['2502']='昆明市';ja['2503']='曲靖市';ja['2504']='玉溪市';ja['2505']='大理市';ja['2506']='丽江市';ja['2507']='蒙自市';ja['2508']='开远市';ja['2509']='个旧市';ja['2510']='红河州';
ja['2600']='贵州省';ja['2602']='贵阳市';ja['2603']='遵义市';
ja['2700']='甘肃省';ja['2702']='兰州市';ja['2703']='金昌市';
ja['2800']='内蒙古';ja['2802']='呼和浩特市';ja['2803']='赤峰市';ja['2804']='包头市';
ja['2900']='宁夏';ja['2902']='银川市';
ja['3000']='西藏';ja['3002']='拉萨市';ja['3003']='日喀则市';
ja['3100']='新疆';ja['3102']='乌鲁木齐市';ja['3103']='克拉玛依市';ja['3104']='喀什地区市';
ja['3200']='青海省';ja['3202']='西宁市';
ja['3300']='香港';
ja['3400']='澳门';
ja['3500']='台湾';
ja['3600']='国外';
//主要城市数据字典
var maincity=[['华北-东北',['0100','0500','2303','2302','2402','2202']],['华东 地区',['0200','0702','0703','0802','0803','1502','1102','1202','1203']],['华南-华中',['0302','0400','0308','1802','1902','1702']],['西北-西南',['2002','0902','0600','2502']]];
//所有省份数据字典
var allprov=[['华北-东北',['1600','2100','2800','2300','2400','2200']],['华东 地区',['0700','0800','1500','1100','1300','1200']],['华南-华中',['0300','1400','1000','1700','1800','1900']],['西北-西南',['2000','2700','3200','2900','3100','0900','2600','2500','3000']],['其它',['3300','3400','3500','3600']]];
var isie = /msie/.test(navigator.useragent.tolowercase());
var containerid = "container";
var floatid = "float_lay";
function init_check(){
_container = document.getelementbyid(containerid);
_float = document.getelementbyid(floatid);
_float.onmouseover = function(){this.style.display = 'block';}
_float.onmouseout = function(){this.style.display = 'none';}
//三个区域的创建
_selectcity = document.createelement("div");
if(document.getelementbyid("result").getelementsbytagname("input").length == 0){
var s_h3 = document.createelement("h3"); s_h3.innerhtml = "选中城市:";
_selectcity.appendchild(s_h3);
}else{
_selectcity.innerhtml = document.getelementbyid("result").innerhtml;
var _input_s = _selectcity.getelementsbytagname("input");
for (var i = 0 ; i < _input_s.length; i++){
_input_s[i].checked = true;
_input_s[i].onclick = function(){
var _input_m = _maincity.getelementsbytagname("input");
var _input_a = _allprovince.getelementsbytagname("input");
for (var i=0; i<_input_a.length; i++)
_input_m[_input_m.length+i] = _input_a[i];
for(var j=0; j<_input_m.length+_input_a.length; j++)
if(_input_m[j].value == this.value)
_input_m[j].checked = false;
_selectcity.removechild(this.parentnode);
}
}
}
_maincity = document.createelement("div");
var m_h3 = document.createelement("h3"); m_h3.innerhtml = "主要城市:";
_maincity.appendchild(m_h3);
_allprovince = document.createelement("div");
var a_h3 = document.createelement("h3"); a_h3.innerhtml = "所有省份:";
_allprovince.appendchild(a_h3);
var div = [],h = [],input = [],span = [];
_selectcity.id = "select_city"; _maincity.id = "main_city"; _allprovince.id = "all_province";
_container.appendchild(_selectcity); _container.appendchild(_maincity); _container.appendchild(_allprovince);
//主要城市部分check的创建
for (var i = 0 ; i < maincity.length ;i++){
div[i] = document.createelement("div");
_maincity.appendchild(div[i]);
h[i] = document.createelement("h4");
div[i].appendchild(h[i]);
h[i].innerhtml = maincity[i][0];
for (var j=0 ; j < maincity[i][1].length ; j++){
input[j] = document.createelement("input");
input[j].type = "checkbox";
input[j].value = maincity[i][1][j];
span[j] = document.createelement("span");
div[i].appendchild(span[j]);
span[j].appendchild(input[j]);
span[j].appendchild(document.createtextnode(ja[maincity[i][1][j]]));
}
}
//所有省份check的创建(不包括其他)
for (var i=0 ; i < allprov.length - 1; i++){
div[i] = document.createelement("div");
_allprovince.appendchild(div[i]);
h[i] = document.createelement("h4");
div[i].appendchild(h[i]);
h[i].innerhtml = allprov[i][0];
for (var j=0 ; j < allprov[i][1].length ; j++){
span[j] = document.createelement("span");
span[j].id = allprov[i][1][j];
span[j].innerhtml = ja[allprov[i][1][j]];
div[i].appendchild(span[j]);
span[j].onclick = function(evt){
if(_float.style.display == 'none'){
var e = evt || window.event;
_float.style.left = e.clientx-document.getelementbyid("popupaddr").offsetleft + "px";
_float.style.top = e.clienty-document.getelementbyid("popupaddr").offsettop + "px";
_float.style.display = 'block';
_float.classname = this.id;
createlay(this.id);
}
}
span[j].onmouseover = function(){
if(_float.classname == this.id)
_float.style.display = 'block';
}
span[j].onmouseout = function(){
_float.style.display = 'none';
}
}
}
//所有省份check中其他的创建
div[0] = document.createelement("div");
_allprovince.appendchild(div[0]);
h[0] = document.createelement("h4");
div[0].appendchild(h[0]);
h[0].innerhtml = allprov[4][0];
for (var j=0 ; j < allprov[4][1].length ; j++){
input[j] = document.createelement("input");
input[j].type = "checkbox";
input[j].value = allprov[4][1][j];
span[j] = document.createelement("span");
div[0].appendchild(span[j]);
span[j].appendchild(input[j]);
span[j].appendchild(document.createtextnode(ja[allprov[4][1][j]]));
}
check_in_select();
}
//maincity中的checkbox的事件相应
function init_check_event(){
var _input_m = _maincity.getelementsbytagname("input");
var _input_a = _allprovince.getelementsbytagname("input");
for (var j=0; j<_input_a.length; j++)
_input_m[_input_m.length+j] = _input_a[j];
for(var i=0 ; i < _input_m.length+_input_a.length ; i++)
_input_m[i].onclick = function(){
if(this.checked && check_num(this)){
var span = this.parentnode.clonenode(true);
_selectcity.appendchild(span);
change_float_check(this.value);
if(isie) select_true();
//已选中的checkbox的事件相应
span.getelementsbytagname("input")[0].onclick = function(){
for(var j=0; j<_input_m.length+_input_a.length; j++)
if(_input_m[j].value == this.value)
_input_m[j].checked = false;
change_float_check(this.value);
_selectcity.removechild(this.parentnode);
}
} else {
var _input_s = _selectcity.getelementsbytagname("input");
for (var j=0; j 950)
n = i.tostring();
else
n = '0' + i.tostring();
if(ja[n] == null) break;
else{
input[n] = document.createelement("input");
input[n].type = "checkbox";
input[n].value = n;
span[n] = document.createelement("span");
span[n].appendchild(input[n]);
span[n].appendchild(document.createtextnode(ja[n]));
_float.appendchild(span[n]);
}
}
check_in_select();
init_lay_event();
}
function init_lay_event(){
var _input_l = _float.getelementsbytagname("input");
for (var i = 0 ; i < _input_l.length ; i++){
_input_l[i].id = i;
_input_l[i].onclick = function(){
if(this.checked && check_num(this)){
if(this.id == 0){
var _input_s = _selectcity.getelementsbytagname("input");
for (var j = 0 ; j < _input_s.length; j++){
if(_input_s[j].value.indexof(this.value.substr(0,2)) != -1){
change_maincity_check(_input_s[j].value);
change_float_check(_input_s[j].value);
_selectcity.removechild(_input_s[j].parentnode);
j--;
}
}
}
else{
if(_input_l[0].checked){
var _input_t = _selectcity.getelementsbytagname("input");
//alert(_input_t.length);
for (var k = 0 ; k < _input_t.length; k++){
if(_input_t[k].value == _input_l[0].value)
_selectcity.removechild(_input_t[k].parentnode);
//alert(_input_t[k].value);
}
_input_l[0].checked = false;
}
}
var span = this.parentnode.clonenode(true);
_selectcity.appendchild(span);
if(isie) select_true();
change_maincity_check(this.value);
//float层中已选中的checkbox的事件相应
span.getelementsbytagname("input")[0].onclick = function(){
for(var j=0; j<_input_l.length; j++)
if(_input_l[j].value == this.value)
_input_l[j].checked = false;
change_maincity_check(this.value);
_selectcity.removechild(this.parentnode);
}
} else {
var _input_s = _selectcity.getelementsbytagname("input");
for (var j=0; j < _input_s.length; j++){
if(_input_s[j].value == this.value)
_selectcity.removechild(_input_s[j].parentnode);
}
change_maincity_check(this.value);
}
}
}
}
function check_num(obj){
var _input_s = _selectcity.getelementsbytagname("input");
if(_input_s.length < 5) return true;
else{
obj.checked = false;
alert("最多只能选择5个选项");
return false;
}
}
function change_maincity_check(value){
var _input_m = _maincity.getelementsbytagname("input");
for (var i = 0 ; i < _input_m.length; i++){
if(_input_m[i].value == value)
if(!_input_m[i].checked)
_input_m[i].checked = true;
else
_input_m[i].checked = false;
}
}
function change_float_check(value){
var _input_f = _float.getelementsbytagname("input");
for (var i = 0 ; i < _input_f.length; i++){
if(_input_f[i].value == value)
if(!_input_f[i].checked)
_input_f[i].checked = true;
else
_input_f[i].checked = false;
}
}
function check_in_select(value){
var _input_s = _selectcity.getelementsbytagname("input");
var _input_f = _float.getelementsbytagname("input");
var _input_m = _maincity.getelementsbytagname("input");
var _input_a = _allprovince.getelementsbytagname("input");
for (var i = 0 ; i < _input_s.length ; i++){
for (var j=0 ; j < _input_f.length ; j++){
if(_input_f[j].value == _input_s[i].value)
_input_f[j].checked = true;
}
for (var k=0 ; k < _input_m.length ; k++){
if(_input_m[k].value == _input_s[i].value)
_input_m[k].checked = true;
}
for (var l=0 ; l < _input_a.length ; l++){
if(_input_a[l].value == _input_s[i].value)
_input_a[l].checked = true;
}
}
}
function select_true(){
var _input_s = _selectcity.getelementsbytagname("input");
for (var i = 0 ; i < _input_s.length; i++)
_input_s[i].checked = true;
}
function write_result(){
var _result = document.getelementbyid("result");
_result.innerhtml = _selectcity.innerhtml;
var _result_input = _result.getelementsbytagname("input");
for (var i = 0 ; i < _result_input.length; i++){
_result_input[i].checked = true;
_result_input[i].onclick = function(){
_result.removechild(this.parentnode);
}
}
}
我就是结果:
[ctrl+a 全选 注:如需引入外部js需刷新才能执行]