/** *================================================================= *Name: 叶子js分页样式(ShowoPage Style With JS) *RCSfile: Cls_jsPage.js *Revision: 0.06Beta *Author: Yehe(叶子) *Released: 2005-04-26 13:11:42 *Description: js分页样式,显示上一页下一页的翻页结果 *Contact: QQ:311673,MSN:myehe@msn.com *WebSite: http://www.yehe.org,http://www.showo.com *================================================================= */ function Cls_jsPage(iRecCount,iPageSize,iPageNum,sName){ this.iRC=Cls_jsPage.fFormatNum(iRecCount,1,0,0,0);//总记录条数 this.iPS=Cls_jsPage.fFormatNum(iPageSize,1,0,1,0);//每页记录数目 this.iPN=Cls_jsPage.fFormatNum(iPageNum,0,0,0,0);//显示的前后页数,0为显示所有,负数为这么多页面一个跳转 this.sN=sName;//实例对象名 this.sTPage="{$Page}";//页数 this.sTPageCount="{$PageCount}";//总页数 this.sTRecCount="{$RecCount}";//总记录数 this.sTPageSize="{$PageSize}";//每页记录数 this.sTPageFrist="{$PageFrist}";//首页 this.sTPagePrev="{$PagePrev}";//上页 this.sTPageNext="{$PageNext}";//下页 this.sTPageLast="{$PageLast}";//尾页 this.sTPageText="{$PageText}";//数字跳转 this.sTPageTextF="{$PageTextF}";//数字跳转框架 this.sTPageInput="{$PageInput}";//输入框跳转 this.sTPageSelect="{$PageSelect}";//下拉菜单跳转 this.sTPageNum="{$PageNum}";//数字页数 this.iPC=this.getPageCount();//得到页数 } //输入 页数开始值,结尾值 Cls_jsPage.prototype.setPageSE=function(sPageStart,sPageEnd){ var sPS=sPageStart,sPE=sPageEnd; this.sPS=(sPS.length>0)?sPS:"Page="; this.sPE=(sPE.length>0)?sPE:""; } //输入 网址 Cls_jsPage.prototype.setUrl=function(sUrl){ var s=sUrl; this.Url=(s.length>0)?s:""+document.location; } //输入 输入框&下拉框name值 Cls_jsPage.prototype.setPageInput=function(sPageInput){ var sPI=sPageInput; this.sPI=(sPI.length>0)?sPI:"Page"; } //输入 语言 首页(Disable,Enale) Cls_jsPage.prototype.setPageFrist=function(sDis,sEn){ var sD=sDis,sE=sEn; this.PF_D=sD; this.PF_E=sE; } //输入 语言 上页 Cls_jsPage.prototype.setPagePrev=function(sDis,sEn){ var sD=sDis,sE=sEn; this.PP_D=sD; this.PP_E=sE; } //输入 语言 下页 Cls_jsPage.prototype.setPageNext=function(sDis,sEn){ var sD=sDis,sE=sEn; this.PN_D=sD; this.PN_E=sE; } //输入 语言 尾页 Cls_jsPage.prototype.setPageLast=function(sDis,sEn){ var sD=sDis,sE=sEn; this.PL_D=sD; this.PL_E=sE; } //输入 语言 数字跳转 Cls_jsPage.prototype.setPageText=function(sDis,sEn){ var sD=sDis,sE=sEn; this.PT_D=sD;//"[{$PageNum}]" this.PT_E=sE;//"第{$PageNum}页" } //输入 语言 数字跳转外围模板 Cls_jsPage.prototype.setPageTextF=function(sDis,sEn){ var sD=sDis,sE=sEn; this.PTF_D=sD;//" {$PageTextF} " this.PTF_E=sE;//" {$PageTextF} " } //输入 语言 下拉菜单跳转 Cls_jsPage.prototype.setPageSelect=function(sDis,sEn){ var sD=sDis,sE=sEn; this.PS_D=sD;//"[{$PageNum}]" this.PS_E=sE;//"第{$PageNum}页" } //输入 css Cls_jsPage.prototype.setPageCss=function(sCssPageText,sCssPageInput,sCssPageSelect){ var sCPT=sCssPageText,sCPI=sCssPageInput,sCPS=sCssPageSelect; this.CPT=sCPT;//数字跳转css this.CPI=sCPI;//输入框跳转css this.CPS=sCPS;//下拉菜单跳转css } //输入 Html模板 Cls_jsPage.prototype.setHtml=function(sHtml){ var sH=sHtml; this.Html=sH;//Html模板 } //计算页数 Cls_jsPage.prototype.getPageCount=function(){ var iRC=this.iRC,iPS=this.iPS,i=0; i=(iRC%iPS==0)?(iRC/iPS):(Cls_jsPage.fFormatNum((iRC/iPS),1,0,0,0)+1); return (i); } //取得模板页数和当前页数 Cls_jsPage.prototype.getUrl=function(iType){ var s=this.Url,sPS=this.sPS,sPE=this.sPE,sTP=this.sTPage,iPC=this.iPC; var iT=iType; var i,sPageIndex; if (s.indexOf(sPS)==-1) { s+=(s.indexOf("?")==-1)?"?"+sPS+sTP:"&"+sPS+sTP; //s=Cls_jsPage.fReg(sU,"(&+)","&"); //s=Cls_jsPage.fReg(sU,"(\?&)","\?"); i=1; } else { sReg="(\\S.*)"+Cls_jsPage.fFormatReg(sPS)+"(\\d*)"+Cls_jsPage.fFormatReg(sPE)+"(\\S.*|\\S*)"; sPageIndex=Cls_jsPage.fReg(s,sReg,"$3"); s=s.replace(sPS+sPageIndex+sPE,sPS+sTP+sPE); i=Cls_jsPage.fFormatNum(sPageIndex,1,1,0,iPC); } return (iT==0?s:i) } //页面跳转 Cls_jsPage.prototype.PageJump=function(){ var sPL,sPV,sP; var sU=this.getUrl(0),iPI=this.getUrl(1); var sPI=this.sPI,sTP=this.sTPage,iPC=this.iPC; eval("sPL=document.getElementsByName(\""+sPI+"\").length;"); if (sPL>1) { for (i=0;i0) { location.href(sU.replace(sTP,sP)); break; } } } else { eval("sPV=document.all."+sPI+".value;"); sP=Cls_jsPage.fFormatNum(sPV,1,1,0,iPC); if (sP>0&&(sP!=iPI)) { location.href(sU.replace(sTP,sP)); } } } //输出 Cls_jsPage.prototype.Write=function(){ var sU=this.getUrl(0),iPI=this.getUrl(1); var sN=this.sN,sPI=this.sPI; var iPC=this.iPC,iPN=this.iPN;; var iRC=this.iRC,iPS=this.iPS; var PF_D=this.PF_D,PF_E=this.PF_E; var PP_D=this.PP_D,PP_E=this.PP_E; var PN_D=this.PN_D,PN_E=this.PN_E; var PL_D=this.PL_D,PL_E=this.PL_E; var PT_D=this.PT_D,PT_E=this.PT_E; var PTF_D=this.PTF_D,PTF_E=this.PTF_E; var PS_D=this.PS_D,PS_E=this.PS_E; var CPT=this.CPT,CPI=this.CPI; var CPS=this.CPS,iPN=this.iPN; var s=this.Html; sTPage=this.sTPage; sTPageCount=this.sTPageCount; sTRecCount=this.sTRecCount; sTPageSize=this.sTPageSize; sTPFrist=this.sTPageFrist; sTPPrev=this.sTPagePrev; sTPNext=this.sTPageNext; sTPLast=this.sTPageLast; sTPText=this.sTPageText; sTPTextF=this.sTPageTextF; sTPInput=this.sTPageInput; sTPSelect=this.sTPageSelect; sTPageNum=this.sTPageNum; PrevP=Cls_jsPage.fFormatNum((iPI-1),1,1,1,iPC); NextP=Cls_jsPage.fFormatNum((iPI+1),1,1,1,iPC); if (iPI<=1&&iPC<=1) { FirstPU=PF_D; PrevPU=PP_D; NextPU=PN_D; LastPU=PL_D; } else if (iPI==1&&iPC>1) { FirstPU=PF_D; PrevPU=PP_D; NextPU=""+PN_E+""; LastPU=""+PL_E+""; } else if (iPI==iPC) { FirstPU=""+PF_E+""; PrevPU=""+PP_E+""; NextPU=PN_D; LastPU=PL_D; } else { FirstPU=""+PF_E+""; PrevPU=""+PP_E+""; NextPU=""+PN_E+""; LastPU=""+PL_E+""; } PageSelect=""; PageText=""; PageInput=""; if (iPN<0) { iPN=Math.abs(iPN); PageStart=(iPI%iPN==0)?(iPI/iPN):(Cls_jsPage.fFormatNum((iPI/iPN),1,0,0,0)); PageStart=(PageStart*iPN==iPI)?((PageStart-1)*iPN+1):(PageStart*iPN+1); PageEnd=Cls_jsPage.fFormatNum(PageStart+iPN,0,1,0,iPC) } else if (iPN==0) { PageStart=1; PageEnd=iPC; } else { PageStart=Cls_jsPage.fFormatNum((iPI-iPN),1,0,1,0); PageEnd=Cls_jsPage.fFormatNum((PageStart+iPN*2),0,1,0,iPC); PageStart=(PageEnd==iPC)?Cls_jsPage.fFormatNum((PageEnd-iPN*2),1,0,1,0):PageStart; } if (iPC>=1) { PageSelect=""; for (i=PageStart;i<=PageEnd;i++) { if (i!=iPI) { XX=""+PT_E.replace(sTPageNum,i)+""; PageText+=PTF_E.replace(sTPTextF,XX); PageSelect+=""; } else { XX=""+PT_D.replace(sTPageNum,i)+""; PageText+=PTF_D.replace(sTPTextF,XX); PageSelect+=""; } } PageSelect+=""; } s=s.replace(sTPage,iPI); s=s.replace(sTPageCount,iPC); s=s.replace(sTRecCount,iRC); s=s.replace(sTPageSize,iPS); s=s.replace(sTPFrist,FirstPU); s=s.replace(sTPPrev,PrevPU); s=s.replace(sTPNext,NextPU); s=s.replace(sTPLast,LastPU); s=s.replace(sTPText,PageText); s=s.replace(sTPInput,PageInput); s=s.replace(sTPSelect,PageSelect); document.write (s); } //输出Html代码 Cls_jsPage.prototype.GetHtml=function(){ var sU=this.getUrl(0),iPI=this.getUrl(1); var sN=this.sN,sPI=this.sPI; var iPC=this.iPC,iPN=this.iPN;; var iRC=this.iRC,iPS=this.iPS; var PF_D=this.PF_D,PF_E=this.PF_E; var PP_D=this.PP_D,PP_E=this.PP_E; var PN_D=this.PN_D,PN_E=this.PN_E; var PL_D=this.PL_D,PL_E=this.PL_E; var PT_D=this.PT_D,PT_E=this.PT_E; var PTF_D=this.PTF_D,PTF_E=this.PTF_E; var PS_D=this.PS_D,PS_E=this.PS_E; var CPT=this.CPT,CPI=this.CPI; var CPS=this.CPS,iPN=this.iPN; var s=this.Html; sTPage=this.sTPage; sTPageCount=this.sTPageCount; sTRecCount=this.sTRecCount; sTPageSize=this.sTPageSize; sTPFrist=this.sTPageFrist; sTPPrev=this.sTPagePrev; sTPNext=this.sTPageNext; sTPLast=this.sTPageLast; sTPText=this.sTPageText; sTPTextF=this.sTPageTextF; sTPInput=this.sTPageInput; sTPSelect=this.sTPageSelect; sTPageNum=this.sTPageNum; PrevP=Cls_jsPage.fFormatNum((iPI-1),1,1,1,iPC); NextP=Cls_jsPage.fFormatNum((iPI+1),1,1,1,iPC); if (iPI<=1&&iPC<=1) { FirstPU=PF_D; PrevPU=PP_D; NextPU=PN_D; LastPU=PL_D; } else if (iPI==1&&iPC>1) { FirstPU=PF_D; PrevPU=PP_D; NextPU=""+PN_E+""; LastPU=""+PL_E+""; } else if (iPI==iPC) { FirstPU=""+PF_E+""; PrevPU=""+PP_E+""; NextPU=PN_D; LastPU=PL_D; } else { FirstPU=""+PF_E+""; PrevPU=""+PP_E+""; NextPU=""+PN_E+""; LastPU=""+PL_E+""; } PageSelect=""; PageText=""; PageInput=""; if (iPN<0) { iPN=Math.abs(iPN); PageStart=(iPI%iPN==0)?(iPI/iPN):(Cls_jsPage.fFormatNum((iPI/iPN),1,0,0,0)); PageStart=(PageStart*iPN==iPI)?((PageStart-1)*iPN+1):(PageStart*iPN+1); PageEnd=Cls_jsPage.fFormatNum(PageStart+iPN,0,1,0,iPC) } else if (iPN==0) { PageStart=1; PageEnd=iPC; } else { PageStart=Cls_jsPage.fFormatNum((iPI-iPN),1,0,1,0); PageEnd=Cls_jsPage.fFormatNum((PageStart+iPN*2),0,1,0,iPC); PageStart=(PageEnd==iPC)?Cls_jsPage.fFormatNum((PageEnd-iPN*2),1,0,1,0):PageStart; } if (iPC>=1) { PageSelect=""; for (i=PageStart;i<=PageEnd;i++) { if (i!=iPI) { XX=""+PT_E.replace(sTPageNum,i)+""; PageText+=PTF_E.replace(sTPTextF,XX); PageSelect+=""; } else { XX=""+PT_D.replace(sTPageNum,i)+""; PageText+=PTF_D.replace(sTPTextF,XX); PageSelect+=""; } } PageSelect+=""; } s=s.replace(sTPage,iPI); s=s.replace(sTPageCount,iPC); s=s.replace(sTRecCount,iRC); s=s.replace(sTPageSize,iPS); s=s.replace(sTPFrist,FirstPU); s=s.replace(sTPPrev,PrevPU); s=s.replace(sTPNext,NextPU); s=s.replace(sTPLast,LastPU); s=s.replace(sTPText,PageText); s=s.replace(sTPInput,PageInput); s=s.replace(sTPSelect,PageSelect); return s; } //输入:欲格式化字符,是否有最小值(0表示没有,1表示有),是否有最大值,最小值(默认值),最大值 Cls_jsPage.fFormatNum=function(sNum,bMin,bMax,iMinNum,iMaxNum){ var i,iN,iTMin,iTMax,sN=""+sNum,bMi=bMin,bMa=bMax,iMin=iMinNum,iMax=iMaxNum; if (sN.length>0) { iN=parseInt(sN,10); i=(isNaN(iN))?iMin:iN; i=(iiMax&&bMa==1)?iMax:i; } else { i=iMin; } return (i); } //输入:欲正则字符,正则表达式,替换后字符 Cls_jsPage.fReg=function(sStr,sReg,sRe){ var s="",sS=sStr,sR=sReg,sRe=sRe; if ((sS.length>0)&&(sR.length>0)) { eval("re=/"+sR+"/gim;"); s=sS.replace(re,sRe); } return (s); } //格式化正则中的特殊字符 Cls_jsPage.fFormatReg=function(sReg){ var s="",sR=sReg; var sF=new Array ("/",".","+","[","]","{","}","$","^","?","*"); if (sR.length>0) { for (i=0;i<=sF.length;i++) { sR=sR.replace(sF[i],"\\"+sF[i]); } s="("+sR+")"; } return (s); }