现在的位置: 首页 > 综合 > 正文

鄙人最近搞的js购物车程序

2013年03月07日 ⁄ 综合 ⁄ 共 27611字 ⁄ 字号 评论关闭

主要程序如下

// JavaScript Document
$(document).ready(function(){
	
	/************公用************/
	$('.products_list').html('');
	runNav();
	displayType1(2);
		$("ul.fatherNav li").hover(function(){
			
			$(this).addClass("hover");
			$('ul:first',this).slideDown('fast').css('visibility', 'visible');
		
		}, function(){
		
			$(this).removeClass("hover");
			$('ul:first',this).slideUp(100).css('visibility', 'hidden');
		
		});	
      $("ul.fatherNav li ul li:has(ul)").find("a:first").append(" » ");
	/************公用****************/
	
/**********************订购**********************************/
	/**********************************购物车类***************************************/
/*****************************************************/
	var decodeUrl=function(){//解析URL获得文章ID
		var url=document.location.href;	
		var urlArray=url.split('/');
		var aID='';
		for(var i=0;i<urlArray.length;i++){
			var nowUrl=new Array();
			if(urlArray[i].indexOf('.html')!=-1){//搜索该数组是否含有.html字符
				nowUrl=urlArray[i].split('.');
				}
			}
		aID=nowUrl[0];
		return aID;//返回文章ID
	}//decodeUrl()
	
	//alert(decodeUrl());
/************************************************/
/*****这个类可以根据需要改变setter和getter***********/
 var product=function(productArr){/*商品类基类productArr=>array;productArr['ID'],productArr['name'],productArr['pic'],=productArr['lvs'],productArr['width'],productArr['thickness '],productArr['length'],productArr['open'],productArr['capacity']*/
		var _ID=productArr['ID'],_name=productArr['name'],_lvs=productArr['lvs'],_pic=productArr['pic'],_width=productArr['width'],
		_thickness=productArr['thickness '],_len=productArr['len'],_freeOpen=productArr['freeOpen'],_capacity=productArr['capacity'],_this=this;
		this.num=productArr['num'];
		this.getName=function(){
			return _name;
			}
		this.getID=function(){
			return _ID;
			}	
		this.getLvs=function(){
			return _lvs;
			}
		this.getPic=function(){
			return _pic;
			}
		this.getWidth=function(){
			return _width;
			}
		this.getThickness=function(){
			return _thickness;
			}
		this.getLen=function(){
			return _len;
			}
		this.getFreeOpen=function(){
			return _freeOpen;
			}
		this.getCapacity=function(){
			return _capacity;
			}
		this.setNum=function(newNum){
			_this.num=newNum;
			}	
		
		}
	
	var makeProductObj=function(gID,pID,num){//制造product对象函数,返回制造的product对象,gID=>数据组ID,pID=>商品ID(工厂模式,根据需要可以改变)
			/*********制造代码*********/
			var pData=[];
			(function(gID,pID){
				$.ajax({
					url:'/module/data/default.php?action=dataDetail&groupID='+gID+'&ID='+pID+'&r='+new Date(),
					type:'post',
					dataType:'xml',
					async:false,
					/**工厂方法***/
					success:function(dataXML){
						pData.lvs=$(dataXML).children('root').children('extend10').text();
						pData.width=$(dataXML).children('root').children('extend11').text();
						pData.thickness=$(dataXML).children('root').children('extend12').text();
						pData.len=$(dataXML).children('root').children('extend13').text();
						pData.freeOpen=$(dataXML).children('root').children('extend14').text();
						pData.capacity=$(dataXML).children('root').children('extend15').text();
						pData.name=$(dataXML).children('root').children('name').text();
						pData.pic=$(dataXML).children('root').children('extend18').text();
						}
					});
				})(gID,pID);
			return new product({
				num:num,
				name:pData.name,
				ID:pID,
				pic:pData.pic,
				lvs:pData.lvs,
				width:pData.width,
				thickness:pData.thickness,
				len:pData.len,
				freeOpen:pData.freeOpen,
				capacity:pData.capacity
				});
		}
		
	var mockCookie=$.cookies.get('pItem');//cookie的全局变量=>'商品ID|数量,商品ID|数量'
	//alert(mockCookie);
	
	var productCollection=function(){//商品搜集类
			var products=[];
			var hasOne=function(productObj){
				var isOne=0;
			    for(var i=0;i<products.length;i++){
					if(products[i].getID()==productObj.getID()){
						isOne=1;
						break;
						}
					}
				return isOne;
				}
              var initProduct
			/********初始哈products数组代码********/
                       //alert(mockCookie);
              if(mockCookie){
			     initProduct=mockCookie.split(',');
			     for(var i=0;i<initProduct.length;i++){
				   var _productTemp=initProduct[i].split('|');
					products.push(new makeProductObj(5,parseInt(_productTemp[0]),parseInt(_productTemp[1])));
				 }
                          }
			/*******初始哈products数组代码*********/
			
			this.addProduct=function(productObj){//添加商品
			       if(hasOne(productObj)!=1){
						products.push(productObj);
				   	}
				}
			this.delProduct=function(productObj){//删除商品
				for(var i=0;i<products.length;i++){
					if(products[i]===productObj){
						products.splice(i,1);
						}
					}
				}//del
			this.setNumByPid=function(pID,newNum){//设置商品数量
					for(var k=0;k<products.length;k++){
						if(products[k].getID()==pID){
							products[k].setNum(newNum);
							break;
							}
						}
				}
			this.getProductById=function(pID){//pID为商品的ID,获得商品对象
					for(var j=0;j<products.length;j++){
						if(products[j].getID()==pID){
							return products[j];
							break;
							}
						}
					return false;
				}
			this.getProducts=function(){//获得商品对象数组
				return products;
				}
		}
		
	
	var cart=function(){//购物车类
			var _productCollection='';
			var _nowCollection='';
			var _this=this;
			this.setCollection=function(collection){//设置collection
				_productCollection=collection;
				_nowCollection=_productCollection;//动态collection对象
				_this.setTemp();
				}
			this.temp=[];//初始化collection对象
			this.setTemp=function(){
					if(!_productCollection){
						throw new Error('请先指定collection对象!');
						}
					var listProduct=_productCollection.getProducts();
					for(var i=0;i<listProduct.length;i++){
							_this.temp[i]=[];
							_this.temp[i]=listProduct[i];
						}
				};
			this.delProduct=function(pID){//删除单个商品pID->商品的ID号
					var needProduct=_nowCollection.getProductById(pID);
					if(needProduct!=false){
						_nowCollection.delProduct(needProduct);
						}
				}
			this.setNumByPid=function(pID,newNum){//设置某个商品的数量,pID->商品ID
					_nowCollection.setNumByPid(pID,newNum);
				}
			this.getCurrentNumByPid=function(pID){//获得某个商品的数量,pID->商品ID
					var productObj=_nowCollection.getProductById(pID);
					return productObj.num;
				}
			this.renderCart=function(){//渲染函数
					throw new Error('错误,该方法必须在子类中实现');
				}
			this.bindEvent=function(){//绑定事件函数
					throw new Error('错误,该方法必须在子类中实现');
				}
			//this.renderCart();
			this.touchOff=function(){//触发
					_this.renderCart();
					_this.bindEvent();
				}
			this.getNewCollection=function(){//获得新的collection对象
					return _nowCollection;
				}
		}
/********************************购物车类****************************************/
		var cartBox=function(pid){
			//alert('cartBox');
			/***************实例化*****************/
			if(pid==''||pid==undefined){
				throw new Error('请指定pid');
				}
			/***************实例化***************/
			var win1=new popBox({//这是一个弹窗类,稍后贴出代码
				ID:'productBox',
				bgColor:'#e6e6e6',
				width:726,
				moveHandle:false,
				closeButton:false,
				height:'auto',
				times:200,
				lock:true,
				content:$('.dingg').html(),
				shadow:true,
				position:'center',
				displayCallBack:function(){
					//alert('弹框');
					cartTest.renderCart=function(){//子渲染
							var _content='';
							var _content='';
							//alert(this.temp.length);
							for(var i=0;i<this.temp.length;i++){
									//alert(this.temp[i].getID());
									_content+='<table class="cartList" width="690" cellspacing="0" cellpadding="0" border="0" style="background:url(/template/27/images/dingg_topbg.jpg) repeat-x top center; height:120px;"><tr><td align="right" valign="middle" height="20" colspan="11"><a href="#"><img src="/template/27/images/dingg_x.jpg"></a> </td></tr><tr><td align="center" valign="middle" class="dingg_img"><input type="hidden" value="'+this.temp[i].getID()+'"/><img width="86" height="78" src="'+this.temp[i].getPic()+'"></td><td align="center" width="90" valign="middle" height="50">'+this.temp[i].getName()+'</td><td align="center" width="70" valign="middle" height="50">'+this.temp[i].getLvs()+'</td><td align="center" width="70" valign="middle" height="50">'+this.temp[i].getWidth()+'</td><td align="center" width="70" valign="middle" height="50">'+this.temp[i].getThickness()+'</td><td align="center" width="70" valign="middle" height="50">'+this.temp[i].getLen()+'</td><td align="center" width="70" valign="middle" height="50">'+this.temp[i].getFreeOpen()+'</td><td align="center" width="70" valign="middle" height="50">'+this.temp[i].getCapacity()+'</td><td class="numJian" align="center" width="21" valign="middle" height="50"><a href="#"><img style="float:left; margin:0px; padding:0px;" class="jian" src="/template/27/images/dingg_-.jpg"></a></td><td class="nowNum" align="center" width="28" valign="middle" height="50"><input type="text" value="'+this.temp[i].num+'" class="dingg_input" name="textfield"></td><td align="center" class="numJia" width="21" valign="middle" height="50"><a href="#"><img class="jia" src="/template/27/images/dingg_+.jpg"></a></td></tr></table>';				
								}
							$('#'+win1.ID).find('.dingg_content').find('form').find('table').eq(0).after(_content);//渲染面板
							/**popBoxCount**/
					}//renderCart
					cartTest.bindEvent=function(){
									var _this=this;
									//alert($('#'+win1.ID).find('.cartList').eq(0).html());
									$('#'+win1.ID).find('.cartList').each(function(index){
											var _each=$(this);
											_each.find('tr').eq(0).children('td').find('img').click(function(){
												//alert('删除');
												_this.delProduct($(this).parents('tr').parents('table').find('input[type=hidden]').val());
												$(this).parents('tr').parents('table').remove();
										
												});//click删除商品
											
											_each.find('tr').eq(1).children('td:last').find('img').click(function(){
													var _jiaThis=$(this);
													//alert($(this).parents('tr').parents('table').find('input[type=hidden]').val());
													_this.setNumByPid($(this).parents('tr').parents('table').find('input[type=hidden]').val(),_this.getCurrentNumByPid($(this).parents('tr').parents('table').find('input[type=hidden]').val())+1);
													//alert(_jiaThis.parents('td').siblings('td[class=nowNum]').children('input').val());
													_jiaThis.parents('td').siblings('td[class=nowNum]').children('input').val(
														_this.getCurrentNumByPid(_jiaThis.parents('tr').parents('table').find('input[type=hidden]').val())
													);
												});//click增加商品数量
											_each.find('tr').eq(1).children('td[class=numJian]').find('img').click(function(){
													var _jianThis=$(this);
													if(_this.getCurrentNumByPid($(this).parents('tr').parents('table').find('input[type=hidden]').val())>1){
														_this.setNumByPid($(this).parents('tr').parents('table').find('input[type=hidden]').val(),_this.getCurrentNumByPid($(this).parents('tr').parents('table').find('input[type=hidden]').val())-1);
														_jianThis.parents('td').siblings('td[class=nowNum]').children('input').val(
														_this.getCurrentNumByPid(_jianThis.parents('tr').parents('table').find('input[type=hidden]').val())
													);
														}//如果当前商品数量大于1
												});//click减少商品数量
											_each.find('tr').eq(1).children('td[class=nowNum]').focusout(function(){
												
												});//自定义数量
										});//each
									
									/*$('#'+win1.ID).find('.cartList').find('tr').eq(1).children('td:last').find('img').click(function(){
												//alert('增加');
												_this.setNumByPid($(this).parents('tr').parents('table').find('input[type=hidden]').val(),_this.getCurrentNumByPid($(this).parents('tr').parents('table').find('input[type=hidden]').val())+1);
												$(this).parents('tr').parents('table').find('input[type=hidden]').val(_this.getCurrentNumByPid($(this).parents('tr').parents('table').find('input[type=hidden]').val()));
												$('#'+win1.ID).find('.dingg_content').find('form').find('table:gt(0)').children('tr:eq(1)').children('td[class=nowNum]').children('input').val(_this.getCurrentNumByPid($(this).parents('tr').parents('table').find('input[type=hidden]').val()));
												
				});//增加数量按钮*/
									$('#'+win1.ID).find('.dingg_content').find('form').find('table:gt(0)').children('tr:eq(1)').children('td[class=jia]').find('img').click(function(){
										if(_this.getCurrentNumByPid($(this).parents('tr').parents('table').find('input[type=hidden]').val())>1){
												_this.setNumByPid($(this).parents('tr').parents('table').find('input[type=hidden]').val(),_this.getCurrentNumByPid($(this).parents('tr').parents('table').find('input[type=hidden]').val())-1);
												$('#'+win1.ID).find('.dingg_content').find('form').find('table:gt(0)').children('tr:eq(1)').children('td[class=nowNum]').children('input').val(_this.getCurrentNumByPid($(this).parents('tr').parents('table').find('input[type=hidden]').val()));
										}
									});//减少按钮
							}//bindEvent
					cartTest.touchOff();
					/******初始化用户表单*****/
					var dgUser=$.cookies.get('dgUser');
					var dgTel=$.cookies.get('dgTel');
					var dgEmail=$.cookies.get('dgEmail');
					var dgFax=$.cookies.get('dgFax');
					var dgAddress=$.cookies.get('dgAddress');
					var dgMessage=$.cookies.get('dgMessage');
					
					$('#'+win1.ID).children('.dingg_content').find('form').children('table:last').find('input[name=userName]').val(dgUser);
					$('#'+win1.ID).children('.dingg_content').find('form').children('table:last').find('input[name=tel]').val(dgTel);
					$('#'+win1.ID).children('.dingg_content').find('form').children('table:last').find('input[name=email]').val(dgEmail);
					$('#'+win1.ID).children('.dingg_content').find('form').children('table:last').find('input[name=fax]').val(dgFax);
					$('#'+win1.ID).children('.dingg_content').find('form').children('table:last').find('input[name=address]').val(dgAddress);
					$('#'+win1.ID).children('.dingg_content').find('form').children('table:last').find('textarea[name=message]').val(dgMessage);
					/******初始化用户表单*****/
					
					/***********submit按钮*************/
					$('#'+win1.ID).find('.dingg_content').find('form').find('table:last').find('tr:last').find('input[type=button]').click(function(){
						var _tijiao=$(this);
						/********验证用户表单*******/
						var dgUser=_tijiao.parent().parent().parents('table').parent().find('input[name=userName]').val();
						var dgTel=_tijiao.parent().parent().parents('table').parent().find('input[name=tel]').val();
						var dgEmail=_tijiao.parent().parent().parents('table').parent().find('input[name=email]').val();
						var dgFax=_tijiao.parent().parent().parents('table').parent().find('input[name=fax]').val();
						var dgAddress=_tijiao.parent().parent().parents('table').parent().find('input[name=address]').val()
						var dgMessage=_tijiao.parent().parent().parents('table').parent().find('textarea[name=message]').val()
						if(checkObj.checkEmpty(dgUser)==0){
							alert('Please input your name!');
							return;
							}
						if(checkObj.checkEmpty(dgEmail)==0){
							alert('Please input your email!');
							return;
							}
						if(checkObj.checkEmail(dgEmail)==0){
							alert('Please input true email!');
							return;
							}
						if(checkObj.checkEmpty(dgAddress)==0){
							alert('Please input your address!');
							return;
							}
						//alert(dgAddress);
						/********验证用户表单*******/
						/******写入数据并清除cookie同时转向*******/
						$.cookies.set('pItem','');
						alert('订购成功!');
                                                 //下一步你可以干自己的事情,比如使用ajax请求写入数据
                                                /******写入数据并清除cookie同时转向*******/
						});
						//alert(mockCookie);
						//alert(win1.status);
						//win1.status='display';
						$('#'+win1.ID).find('.dingg_toplx').css('cursor','pointer').click(function(){
							win1.kill();
							//alert(win1.status);
							//win1=null;
							});
					},
				unDisplayCallBack:function(){
					},
				beforeKillCallBack:function(){//kill之前的回调函数,保存cookie
					/*alert($('#'+win1.ID).children('.dingg_content').find('form').children('table:last').find('input[name=userName]').val());*/
					$.cookies.set('dgUser',$('#'+win1.ID).children('.dingg_content').find('form').children('table:last').find('input[name=userName]').val());
					$.cookies.set('dgTel',$('#'+win1.ID).children('.dingg_content').find('form').children('table:last').find('input[name=tel]').val());
					$.cookies.set('dgEmail',$('#'+win1.ID).children('.dingg_content').find('form').children('table:last').find('input[name=email]').val());
					$.cookies.set('dgFax',$('#'+win1.ID).children('.dingg_content').find('form').children('table:last').find('input[name=fax]').val());
					$.cookies.set('dgAddress',$('#'+win1.ID).children('.dingg_content').find('form').children('table:last').find('input[name=address]').val());
					$.cookies.set('dgMessage',$('#'+win1.ID).children('.dingg_content').find('form').children('table:last').find('textarea[name=message]').val());
					},
				killCallBack:function(){//kill之后的操作
					var lastCollection=cartTest.getNewCollection();	
					var _products=lastCollection.getProducts();
					//console.log(_products.length);
					var _mockCookie='';
					for(var i=0;i<_products.length;i++){
							_mockCookie+=_products[i].getID()+'|'+_products[i].num+',';
						}
					_mockCookie=_mockCookie.substring(0,_mockCookie.length-1);
					//alert(_mockCookie);
					//alert(_mockCookie);
					$.cookies.set('pItem',_mockCookie);//设置cookie
					}
				});
				win1.display();
		}//cartBox
		
		var productCollections= new productCollection();
		var cartTest=new cart();
	/**********************订购**********************************/
	$('.products_list').each(function(){
			var _this=$(this);
			_this.children('td:first').click(function(){
								//alert('test');
								var _that=$(this);
								productCollections.addProduct(new makeProductObj(5,_that.children('a').attr('rel'),1));
								cartTest.setCollection(productCollections);
								//cartTest.setTemp();
								new cartBox(_that.children('a').attr('rel'),productCollections);
								});
		});
});


/****文本框****/

function clearText(field)
{
    if (field.defaultValue == field.value) field.value = '';
    else if (field.value == '') field.value = field.defaultValue;
}

/****nav*****/	
/**********************导航二级列表值******************************/
	var getTidFromNodeName1=function(nodeName){
		var tid1=nodeName.replace('p','');
		return tid1;
	}
	var _son1='';
	var displayType1=function(listIndex){
		//alert($('.nav').html());
		//alert($('.fatherNav').html());
		$('.fatherNav').children('.fatherLi').eq(listIndex).find('.sonNav').remove();
		var _url1='/module/data/default.php?action=dataPartition&groupID=5&r='+new Date();
		$.ajax({
			type:'get',
			dataType:'xml',
			async:false,
			url:_url1,
			success:function(dataXML){
				if($(dataXML).find('root').children().length!==0){
					/**插入<ul class="sonNav"**/
					$('.fatherNav').children('.fatherLi').eq(listIndex).append('<ul class="sonNav"></ul>');
					$(dataXML).find('root').children().each(function(index){
						
						
							if($(this).children('parentid').text()==0){
										//var _son='';
										$('.fatherNav').children('.fatherLi').eq(listIndex).children('.sonNav').append('<li class="sonLi" rel="'+getTidFromNodeName1($(this).context.nodeName)+'"><a href="#">'+$(this).children('name').text()+'</a></li>');
										var _this=$(this);
										
										
										_this.siblings().each(function(i){
											var _that=$(this);
											if(_that.children('parentid').text()==getTidFromNodeName1(_this.context.nodeName)){
													_son1+='<li><a href="/products-list/index.html?tid='+getTidFromNodeName1(_that.context.nodeName)+'">'+_that.children('name').text()+'</a></li>';
												}//如果该类是父类的子类
											});//兄弟节点
										
										if(_son1!=''){

												$('.fatherNav').children('.fatherLi').eq(listIndex).children('.sonNav').children('li[rel='+getTidFromNodeName1(_this.context.nodeName)+']').append('<ul>'+_son1+'</ul>');
												}//if _son!=''	
									
								}//如果是顶级分类
									
									
						});//最外层each
					}//如果有分类
						
				}//success
			});
	
	}
	
/****************************分内 内容列表*****************************/

			var dataBoxNav='';	
			
		    var getDataNav=function(tid1){//tid分类ID,linkBox为存储文章链接的数组linkBox[aID]='link';->aID为文章ID,link是该ID文章对应的链接
				if(tid1==''||tid1==undefined){
					 throw new Error('tid1 is empty!');
					}
				var ddsNav='';
				var url='/module/data/default.php?action=data&pageSize=100&page=1&groupID=5&label=&extend=all&partition=5:'+tid1+'&r='+new Date();
				$.ajax({
					type:'get',
					dataType:'xml',
					url:url,
					async:false,
					success:function(dataXML){
						$(dataXML).find('root').children().each(function(index){
						var _this=$(this);
						ddsNav+='<tr class="products_list"><td width="140" height="25" align="center" valign="middle"><a rel="'+_this.context.nodeName.replace('d','')+'" href="#">'+_this.children('Name').text()+'</a></td><td width="80" height="25" align="center" valign="middle">'+_this.children('extend10').text()+'</td><td width="80" height="25" align="center" valign="middle">'+_this.children('extend11').text()+'</td><td width="80" height="25" align="center" valign="middle">'+_this.children('extend12').text()+'</td><td width="80" height="25" align="center" valign="middle">'+_this.children('extend13').text()+'</td><td width="80" height="25" align="center" valign="middle">'+_this.children('extend14').text()+'</td><td width="80" height="25" align="center" valign="middle">'+_this.children('extend15').text()+'</td><td width="80" height="25" align="center" valign="middle">'+_this.children('extend16').text()+'</td><td width="260" height="25" align="left" valign="middle">'+_this.children('extend17').text()+'</td></tr>';
						//alert(ddsNav);
							});
						dataBoxNav=ddsNav;
										   
						}
					});//ajax
			
			}//getData

		var renderPageNav=function(dataNavObj){//dataObj.dlClass,dataObj.content
				//alert(dataNavObj.class);	
				 $(dataNavObj.class1).siblings('tr').remove();
				 //alert(dataNavObj.content);
				 $(dataNavObj.class1).after(dataNavObj.content);
				}
		
		var analyzeNavURL=function(){
				var tid1='';
				var _location=window.location.href;
				var _temp=_location.split('?');
				var _temp1=_temp[1].split('=');
				tid1=_temp1[1];
				return tid1;
			}
		
		var runNav=function(){
			tid1=analyzeNavURL();
			getDataNav(tid1);
			dataNavObj={};
			dataNavObj.content=dataBoxNav;
			dataNavObj.class1='.products_list1';
			renderPageNav(dataNavObj);
			}
	 
 


/*****************************user pannel****************************/
     var userPannel=function(){
		 var email=$.cookies.get('email');
		  $('#email').html('');
		  $('#phone').html('');
		  $('#time').html('');
		  $('#head img').attr('src',' ');
		 if(email==''||email==0) {alert('Please login!'); return false;}
		$.ajax({
				url:'/module/member/?action=getUserInfo&webUser='+email+'&r='+ new Date(),
				type:'GET',
				dataType:'xml',
				success:function(dataXML){
						var phone=$(dataXML).find('root').children('phone').text();
						var time=$(dataXML).find('root').children('time').text();
						var head=$(dataXML).find('root').children('head').text();
						//alert(time);
						$('#phone').text(phone);
						$('#email').text(email);
						$('#time').text(time);
						$('#head img').attr('src',head);    //<img src="images/user_pic.jpg" />
						}
				});
 	
		 }
		 
		 var checkObj=[];
		 checkObj.checkZS=function(num){
			 var _reg=/^[1-9]+[0-9]*]*$/;
			 if(!_reg.test(num)){
				 return 0;
				 }
			return 1;
			 }
		checkObj.checkEmpty=function(str){
			if(str==''){
				return 0;
				}
			return 1;
			}
		checkObj.checkEmail=function(email){
			var _reg=/^([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+@([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+\.[a-zA-Z]{2,3}$/;
			if(!_reg.test(email)){
				return 0;
				}
			return 1;
			}

以上是订购的,即不需要地区管理,也不需要付账,只有追踪客户即可

下面是popBox弹窗类代码

// JavaScript Document
	//若使用移动功能,请先导入jQuery移动UI组件
	var popBox=function(settings){//弹窗函数settings=[]
			//alert(typeof settings['width']);
			//alert(settings['displayCallBack']);
			/************************本类私有变量*****************************/
			/*******************默认值*****************/
			var _shadow=true;//是否有遮罩true/false
			var _closeButton=false;//关闭按钮false/dom元素
			var _killButton=false;//kill按钮false/dom元素
			var _moveHandle=false;//拖动手柄false/dom元素
			var _width=650;//宽,
			var _bgColor='#FFF';//背景样式
			var _height='auto';//高
			var _content='没有内容';//内容
			var _position='center';/*位置topLeft,topCenter,topRight,center,bottomLeft,bottomRight,bottomCenter*/
			var	_lock=true;//是否锁定
			var _times=500;//显示,隐藏的时间
			var _displayCallBack=function(){//dispaly回调函数
					alert('display');
				}
			var _unDisplayCallBack=function(){//unDispaly回调函数
					alert('unDisplay');
				}
			var _beforeKillCallBack=function(){
					alert('beforeKill');
				}//kill之前的回调函数
			var _killCallBack=function(){//kill回调函数
					alert('kill');
				}
			/*******************默认值*****************/
			if(settings['closeButton']!==undefined){
				//alert('shadow');
				_closeButton=settings['closeButton'];
				}	
			if(settings['killButton']!==undefined){
				//alert('shadow');
				_killButton=settings['killButton'];
				}
			if(settings['moveHandle']!==undefined){
				//alert('shadow');
				_moveHandle=settings['moveHandle'];
				}				
			/******************获得设置值********************/
			/**settings['shadow']!=' ' && settings['shadow']!=undefined*/
			if(settings['shadow']!==undefined){
				//alert('shadow');
				_shadow=settings['shadow'];
				}
			if(settings['bgColor']!==undefined){
				//alert('shadow');
				_bgColor=settings['bgColor'];
				}
			if( settings['width']!==undefined){
				_width=settings['width'];
				}
			if( settings['height']!==undefined){
				_height=settings['height'];
				}
			if(settings['content']!==undefined){
				_content=settings['content'];
				}
			if(settings['position']!==undefined){
				_position=settings['position'];
				}
			if( settings['times']!==undefined){
				_times=settings['times'];
				}
			if(settings['lock']!==undefined){
				_lock=settings['lock'];
				}
			if(settings['displayCallBack']!=undefined){
				//alert('here');
				_displayCallBack=settings['displayCallBack'];
				}		
			if( settings['unDisplayCallBack']!==undefined){
				_unDisplayCallBack=settings['unDisplayCallBack'];
				}	
			if( settings['beforeKillCallBack']!==undefined){
				_beforeKillCallBack=settings['beforeKillCallBack'];
				}
			if( settings['killCallBack']!==undefined){
				_killCallBack=settings['killCallBack'];
				}
				
			//alert(settings['shadow']);
			//alert(_shadow);
			/************************本类私有变量******************************/
			
			
						
			/*********************本类内部变量********************/	
			var _this=this;				
			var _baseZindex=10000;
			var _domWidth=$(document).width();
			var _domHeight=$(document).height();
			/********************本类内部变量*******************/
			
			
			/********************本类私有函数**********************/
			var _getZindex=function(){/*获得z-index->首先遍历网页div元素ID中含有popBox的DOM,获得数量,然后本弹窗背景z-index=基数+当前数量+1,弹框z-index=基数+当前数量+2*/
					var _len=$('body').children('div').length;
					var _countDiv=0;
					var _divObj=$('body').children('div');
					var _reg=/^popBox_/;//正则表达式
					for(var i=0;i<_len;i++){
						if(_reg.test(_divObj.eq(i).attr('ID'))){
								_countDiv+=1;
							}
						}
					return _countDiv;//返回已有弹框的数量
				}
			var _getWinZindex=function(){//获得弹窗的z-index
					var _winZindex=_baseZindex+_getZindex()+2;
					return _winZindex;
				}
			var _geWinBgZindex=function(){//获得弹窗背景的z-index
					var _winBgZindex=_baseZindex+_getZindex()+1;
					return _winBgZindex;				
				}
			var _renderBg=function(){//渲染背景
					var _winBgZindex=_geWinBgZindex();
					//alert($(document).height());
					$('body').append('<div id="'+_this.ID+'_bg"></div>');//在body中插入一个半透明的背景
					$('#'+_this.ID+'_bg').addClass('popBox_bg').css({height:_domHeight,width:_domWidth,opcity:0}).css('z-index',_winBgZindex).fadeTo(_times,0.7);
				}
			var _creatWin=function(){//创建窗体
					$('body').append('<div id="'+_this.ID+'"></div>');
					_renderContent(_content);//渲染弹窗主体
					_initWin();//初始化窗体
				}
			var _initWin=function(){//初始化窗体
					var _winZindex=_getWinZindex();
					var _transHeight=0;
					if(_height=='auto'){
						_transHeight='auto';
						}else{
							_transHeight=parseInt(_height)+'px';
							}
					$('#'+_this.ID).css({width:parseInt(_width)+'px',height:_transHeight,position:'absolute',opticity:1.0,background:_bgColor}).css('z-index',_winZindex);
					if(_lock==false){
						if(_moveHandle!==undefined&&_moveHandle!==false&&_moveHandle!==' '){
							$('#'+_this.ID).children(_moveHandle).css('cursor','move');
							//alert(_moveHandle);
							//alert($('#'+_this.ID).children(_moveHandle).html());
							}
						}
					_locationWin();//为窗体定位
				}
			var _locationWin=function(){/*为窗体定位topLeft,topCenter,topRight,centerLeft,center,centerRight,bottomLeft,bottomCenter,bottomRight*/
				var _windowHeight=parseInt($(window).height());
				var _windowWidth=parseInt($(window).width());
				//alert(_windowWidth+_height);	
				var _left=(_windowWidth-parseInt(_width))/2;
				var _top=parseInt($(document).scrollTop())+parseInt(($(window).height()-$('#'+_this.ID).height())/2);
				$('#'+_this.ID).css({top:_top+'px',left:_left+'px'});
				}
			var _renderContent=function(content){//渲染弹窗主体
					$('#'+_this.ID).append(content);
				}
			var bindEvent=function(){//绑定事件
				if(_this.status!=='kill'&&_this.status!=='init'){
							if(_closeButton!==undefined&&_closeButton!==' '&&_closeButton!==false){
								$('#'+_this.ID+' '+_closeButton).css('cursor','pointer').live('click',function(e){
								_this.unDisplay();
								});							
							}//若设置了关闭(close)按钮
							if(_killButton!==undefined&&_killButton!==' '&&_killButton!==false){
								$('#'+_this.ID+' '+_killButton).css('cursor','pointer').live('click',function(e){
								_this.kill();
								});							
							}//若设置了杀死(kill)按钮
						}
					if(_lock==false){
						$('#'+_this.ID).draggable({cancel:''});
						}
				}		
			/*********************本类私有函数*****************/
		
			
			/**********************本类公有函数******************/
			this.status='init';//当前状态init->初始化状态,display->display状态,undisplay->undisplay状态,kill->kill状态
			this.ID='';
			var _ID=settings['ID'];
			if(_ID==' '||(typeof _ID)==undefined){
				throw new Error('ID不能为空');
				}else{
					this.ID='popBox_'+_ID;
					}
			this.display=function(){//显示函数,如果状态是init或者kill重新渲染页面
				//alert(_this.status);
				if(_this.status=='init'||_this.status=='kill'){
						_creatWin();//创建窗体
						//$('#'+_this.ID).css('height',_domHeight);
						if(_shadow==true){//渲染遮罩
							/*alert(_shadow);*/
							_renderBg();
							}
						_this.status='display';
						_displayCallBack();
					}else{
						$('#'+_this.ID).fadeIn(_times);
						if(_shadow==true){
							$('#'+_this.ID+'_bg').fadeIn(_times);
							}
						_this.status='display';
						}
				//alert(typeof _displayCallBack);
				//alert(_this.status);
				bindEvent();
				}
			this.kill=function(){//彻底移除
				//alert(_this.status);
				//alert(_this.status);
				if(_this.status=='kill'||_this.status=='init'){
					//alert(_this.status);
					throw new Error('非法操作,当前状态不允许kill');
				}
				if(_beforeKillCallBack!=undefined){
						_beforeKillCallBack();
						}
				$('#'+_this.ID).remove();
				if(_shadow==true){
					$('#'+_this.ID+'_bg').remove();
					}
				_this.status='kill';
				if(_killCallBack!=undefined){
						_killCallBack();
						}
				}
			this.unDisplay=function(){//隐藏函数
				if(_this.status=='init'||_this.status=='kill'){
					throw new Error('非法操作,当前状态不允许undisplay');
					}
				if(_unDisplayCallBack!=undefined){
					_unDisplayCallBack();
					}
				$('#'+_this.ID).fadeOut(_times);
				$('#'+_this.ID+'_bg').fadeOut(_times);
				_this.status='undisplay';		
				}
			/**********************本类公有函数******************/
		
			
		}//popBox网页弹窗
		
	var errorBox=function(errorMsg){
			//alert(typeof errorBox);
				//alert(errorBox.length);
				var errorObj=new popBox({
				ID:'errorObj',
				bgColor:'#FFF',
				width:300,
				moveHandle:false,
				closeButton:false,
				height:'auto',
				times:200,
				lock:true,
				content:$('#errorBoxContent').html(),
				shadow:true,
				position:'center',
				displayCallBack:function(){	
						$('#'+errorObj.ID).find('.errorMessage').html();
						$('#'+errorObj.ID).find('.errorMessage').html(errorMsg);
						$('#'+errorObj.ID).find('.errorConfirm input').click(function(){
							//alert('here');
							errorObj.kill();
							});
					},
				unDisplayCallBack:function(){
					throw new Error('错误不可以关闭,只可以Kill');//错误方法只能Kill,不能关闭
					},
				killCallBack:function(){
					//errorBox=null;
					}
				});
			errorObj.dispaly();	
		}//错误弹窗

效果图如下

可以看出弹窗类还有一个bug,即高度为height的时候,不能算出bg了

如果你发现其中的不足,请批评指正!

【上篇】
【下篇】

抱歉!评论已关闭.