分页1 - 前端 ol.pager

1.js-api:

ol.loader.mods["ol.pager"] = [
	"jquery",
	{uri: "../ol.pager/pager.js",type:"js",	charset: "utf-8",depend:true},
	{uri: "../ol.pager/pager.css",type:"css",	charset: "utf-8"}
];
2.pager.js

必须传入的参数:

1.pageNumber

2.pageCount

3.totalRecord

4.pageSize

由pageNumber+pageSize能算出RS的移向

/**
 * pager.js
 * @update		2010-11-3
 * @version		0.2
 */
(function($) {
	var isNumeric=function(str){
		var re=/^\d*$/;
		return re.test(str);
	};
	$.fn.pager=function(options) {
			function renderPager(options, obj) {
				this.render = function() {
					if (options.pageNumber > options.pageCount) {
						//自动跳到第一页
						//this.callBack(1);
						return;
					}
					var $pager = $('<ul></ul>');
					var _item=options.item;
					for(var i=0;i<_item.length;i++)
					{
						$pager.append(this.handler(_item[i]));
					}
					return $pager;
				}
				//render end  构建样式
				this.handler=function(label){

					switch(label)
					{
						case "recordCount":
							var text=options.text["recordCount"];
							text=text.replace(/{#recordCount}/g,options.recordCount);
							return $('<li class="recordCount">' +text + '</li>');
						case "first":
						case "pre":
						case "next":
						case "last":
							return this.renderButton(label);
						case "pageCount":
							var text=options.text["pageCount"];
							text=text.replace(/{#pageCount}/g,options.pageCount);
							return $('<li class="pageCount">' +text + '</li>');
						case "qpage":
							return this.renderQPages();
						case "pageSizer":
							return this.renderPageSizer();
						case "quickPager":
							return this.renderQuickPager();
						default:
							return '<li class="text">'+label+'</li>';

					}
				}
				this.renderButton = function(buttonLabel) {
					var destPage = 1;
					var buttonText=options.text[buttonLabel];
					switch (buttonLabel) {
					case "first":
						destPage = 1;
						break;
					case "pre":
						destPage = options.pageNumber - 1;
						break;
					case "next":
						destPage = options.pageNumber + 1;
						break;
					case "last":
						destPage = options.pageCount;
						break;
					case "pageCount":
						destPage = options.pageCount;
						break;
					}
					var exp=new RegExp('{#'+buttonLabel+'}',"gi");
					buttonText=buttonText.replace(exp,destPage);

					var $Button = $('<li class="pgNext link '+buttonLabel+'">' + buttonText + '</li>');
					if (buttonLabel == "first" || buttonLabel == "pre") {
						options.pageNumber <= 1 ? $Button.addClass(buttonLabel+'-empty') : $Button.bind("click", {E: this},
						function(v) {
							v.data.E.callBack(destPage);
						});
					} else {
						options.pageNumber >= options.pageCount ? $Button.addClass(buttonLabel+'-empty') : $Button.bind("click", {E: this},
						function(v) {
							v.data.E.callBack(destPage);
						});
					}
					return $Button;
				}
				//renderButton end

				this.renderQPages = function() {
					var text=options.text["qpage"];
					var container=$("<span class='qpages'></span>");
					var startPoint = 1;
					var endPoint = options.qpageSize;
					var tmp=parseInt(endPoint/2);
					if (options.pageNumber > tmp) {
						startPoint = options.pageNumber - tmp;
						endPoint = options.pageNumber + tmp;
					}
					if (endPoint > options.pageCount) {
						startPoint = options.pageCount -tmp*2;
						endPoint = options.pageCount;
					}
					if (startPoint < 1) {
						startPoint = 1;
					} // loop thru visible pages and render buttons
					for (var page = startPoint; page <= endPoint; page++) {
						var currentButton = $('<li class="page-number link">' + text.replace(/{#qpage}/g,page) + '</li>');
						page == options.pageNumber ? currentButton.addClass('pgCurrent') : currentButton.bind("click", {
							E: this
						},
						function(v) {
							v.data.E.callBack(this.firstChild.data);
						});
						currentButton.appendTo(container);
					}
					if(options.pageCount>options.qpageSize)
					{
						container.append('<li class="text">...</li>');
						var $Button = $('<li class="page-number link page-number-last">' + text.replace(/{#qpage}/g,options.pageCount) + '</li>');
						options.pageNumber >= options.pageCount ? $Button.addClass('pgEmpty') : $Button.bind("click", {E: this},
						function(v) {
							v.data.E.callBack(options.pageCount);
						});
						container.append($Button);
					}
					return container;
				} //renderQPages end

				this.renderQuickPager = function() {
					if(options.pageCount<=1)return null;
					var input=null;
					var t1 = $('<li class="text quickPager"></li>');
					if (options.pageCount <= 1) {//统一样式
						var html = '<select>';
						for (var i = 1; i <= options.pageCount; i++) {
							html += '<option value="' + i + '"';
							if (i == options.pageNumber) {
								html += ' selected';
							}
							html += '>' + i + '</option>';
						}
						html += '</select>';
						input = $(html);
						input.bind("change", {
							E: this
						},
						function(v) {
							v.data.E.callBack($(this).attr("value"));
						});
					} else {
						input = $('<span class="fl">第</span><div id="chatpage"><input id="quickPager" class="pagenum fl" value="' + options.pageNumber + '" style="width:'+(options.pageNumber.toString().length+1)*10+'px;"><a id="enter" class="enter fl" href="javascript:void(0)"></a></div><span class="fl">&nbsp;/' + options.pageCount + '&nbsp;页</span>');
						input.find("#quickPager").bind("keypress", {E: this},function(e) {
							var E = e.data.E;
							if (e.keyCode == 13) {
								var p = $(this).attr("value");
								if (!isNumeric(p)) {
									alert("请输入数字!");
									return false;
								}
								if (parseInt(p) > options.pageCount) {
									alert("最大页数为" + options.pageCount + "!");
									return false;
								}
								E.callBack(p);
								return false;
							}
						});
						input.find("a#enter").bind("click", {E:this},function(e) {
							var E=e.data.E;
							var p = input.find("#quickPager").attr("value");
							if (!isNumeric(p)) {
								alert("请输入数字!");
								return false;
							}
							if (parseInt(p) > options.pageCount) {
								alert("最大页数为" + options.pageCount + "!");
								return false;
							}
							E.callBack(p);
							return false;
						});
					}
					t1.append(input);
					return t1;
				}
				//renderQuickPage end

				this.renderPageSizer = function() {

					var t1;
					if (options.rowList) {
						var text=options.text["pageSizer"];
						text=text.replace(/{#pageSizer}/g,'</span><div id="select" class="fl"></div><span class="fl">');
						t1 = $('<li class="text pageSizer"><span class="fl">'+text+'</span></li>');
						var rowListHtml = '<select name="pageSize">';
						for (var i = 0; i < options.rowList.length; i++) {
							rowListHtml += '<option value="' + options.rowList[i] + '"';
							if (options.rowList[i] == options.pageSize) {
								rowListHtml += ' selected';
							}
							rowListHtml += '>' + options.rowList[i] + '</option>';
						}
						rowListHtml += "</select>";
						var input2 = $(rowListHtml);
						input2.bind("change", {
							E: this
						},
						function(v) {
							if(options.pageSize==this.value)return;
							options.pageSize=this.value;
							v.data.E.callBack(options.pageNumber);
						});
						$("#select", t1).append(input2);
					}
					return t1;
				}
				//renderPageSizer end
				this.callBack = function(page) {
					if(typeof(page)!="number")page=parseInt(page);
					if (page) options.pageNumber = page;
					if (typeof(options.callBack) == "function") options.callBack(options);
				}

				obj.empty().append(this.render());
			}
			//renderPager end*/


			var _default = {
				pageNumber: 1,//当前页码
				pageCount: 1,//页数
				pageSize:null,//页面记录
				recordCount:0,//总记录条数
				qpageSize:9,//页面显示几个快速到达
				rowList:null,//分页大小数组
				text:{//显示文字
						recordCount:"总数目:{#recordCount}",
						first:"首页",
						pre:"上一页",
						qpage:"{#qpage}",
						pageCount:"{#pageCount}",
						next:"下一页",
						last:"末页",
						pageSizer:'每页{#pageSizer}/行'
					},
				item:["recordCount","first","pre","qpage","next","quickPager"]//显示样式
			};
			options.text  = $.extend({}, _default.text, options.text);
			options  = $.extend({}, _default, options);
			return this.each(function() {
				new renderPager(options, $(this));
			});
		}
})(jQuery);
3.css
.pager{ margin: 30px 0 10px;display:block;font-family:Verdana,Tahoma,Arial, Helvetica, sans-serif;overflow:hidden;display:inline-block;zoom:1;*display:inline; text-align:center;width:100%;}
.pager img,.pager input,.pager span,.pager select{vertical-align:middle;}
.pager .pageSizer span,.pager .quickPager span{font-family:tahoma;}
.pager ul{display:inline-block;border:none;text-transform:uppercase;font-size:10px;padding:0;}
.pager ul li{font-size: 9pt;list-style:none;float:left;	border:1px solid #ccc;text-decoration:none;margin:0 5px 0 0;padding:0 5px 0 5px;line-height:21px;}
.pager ul li.link {background:#fff;cursor:pointer;}
.pager ul li.link:hover {border:1px solid #790606;}
.pager ul li.pgCurrent {background: #9b0f0f;color: #fff;border: solid 1px #790606;}
.pager ul li.text{border:none;padding:0px;clear:right;}
.pager ul li.text #chatpage{margin-top:1px;	border:1px solid #809EBA;float:left;overflow:hidden;padding-right:1px;height:18px;}
.pager ul li.text #chatpage input{text-align:center;height:20px;}
.pager ul li.text #chatpage .pagenum{border:0 none;	margin-left:1px;padding:0;line-height:14px;}
.pager ul li.text #chatpage .enter{background:transparent url(pagenum.gif) no-repeat scroll 0 0;background-position:-27px -66px;border:medium none;	cursor:pointer;	height:15px;margin:1px 0 1px 1px;width:18px;display:block;}
.pager ul li.first-empty:hover,
.pager ul li.pre-empty:hover,
.pager ul li.next-empty:hover,
.pager ul li.last-empty:hover{border:1px solid #CCCCCC;}
.pager ul li.first-empty,
.pager ul li.pre-empty,
.pager ul li.next-empty,
.pager ul li.last-empty{cursor:auto;color:#ADADAD;}

/*style1*/
.pager.style1 ul li{margin:0 3px 0 0;}
.pager.style1 ul li.page-number{border:none;padding:0 7px;}
.pager.style1 ul li.page-number.pgCurrent{background:#F97C05;}
.pager.style1 ul li.pgNext{text-decoration:none;padding:0px;border:none;background:transparent url(pagenum2.gif) no-repeat scroll left center;width:50px;height:21px;}
.pager.style1 ul li.pgNext.first,.pager.style1 ul li.last{width:45px;}
.pager.style1 ul li.first{background-position:-9px -23px;}
.pager.style1 ul li.first-empty{background-position:-9px -55px;}
.pager.style1 ul li.pre{background-position:-9px -161px;}
.pager.style1 ul li.pre-empty{background-position:-9px -202px;}
.pager.style1 ul li.next{background-position:-9px -237px;}
.pager.style1 ul li.next-empty{background-position:-9px -272px;}
.pager.style1 ul li.last{background-position:-9px -88px;}
.pager.style1 ul li.last-empty{background-position:-9px -119px;}
.pager.style1 ul li.text #chatpage{margin:0px;border:1px solid #F97C05;float:left;overflow:hidden;padding:1px;height:15px;line-height:15px;}
.pager.style1 ul li.text #chatpage .pagenum{vertical-align:top;border:0 none;padding-left:2px;font-size:12px;height:15px;line-height:15px;}
.pager.style1 ul li.text #chatpage .enter{background:transparent url(pagenum2.gif) no-repeat scroll 0 0;background-position:-12px -310px;border:medium none;cursor:pointer;height:15px;margin:0px;width:18px;display:block;}

/*style2*/
.pager.style2 ul li{margin:0 3px 0 0;}
.pager.style2 ul li.page-number{border:none;padding:0 7px;}
.pager.style2 ul li.page-number.pgCurrent{background:#F97C05;}
.pager.style2 ul li.pgNext{text-decoration:none;padding:0px;border:none;background:transparent url(pagenum2.gif) no-repeat;width:50px;height:21px;}
.pager.style2 ul li.pgNext.first,.pager.style1 ul li.last{width:45px;}
.pager.style2 ul li.first{background-position:-9px -23px;}
.pager.style2 ul li.first-empty{background-position:-9px -55px;}
.pager.style2 ul li.pre{background-position:-9px -161px;}
.pager.style2 ul li.pre-empty{background-position:-9px -202px;}
.pager.style2 ul li.next{background-position:-9px -237px;}
.pager.style2 ul li.next-empty{background-position:-9px -272px;}
.pager.style2 ul li.last{background-position:-9px -88px;}
.pager.style2 ul li.last-empty{background-position:-9px -119px;}
.pager.style2 ul li.text #chatpage{margin:0px;border:1px solid #F97C05;float:left;overflow:hidden;padding:1px;height:15px;line-height:15px;}
.pager.style2 ul li.text #chatpage .pagenum{vertical-align:top;border:0 none;padding-left:2px;font-size:12px;height:15px;line-height:15px;}
.pager.style2 ul li.text #chatpage .enter{background:transparent url(pagenum2.gif) no-repeat scroll 0 0;background-position:-12px -310px;border:medium none;cursor:pointer;height:15px;margin:0px;width:18px;display:block;}
.pager.style2 .quickPager{margin-left:5px;}
.pager.style2 span.qpages li.text{display:none;}
.pager.style2 span.qpages li.text{display:none;}
.pager.style2 ul li.page-number-last{display:none;}

/*style3*/
.pager.style3 ul li{margin:0 3px 0 0;}
.pager.style3 ul li.link:hover {border:1px solid #F97C05;}
.pager.style3 ul li.pgNext{text-decoration:none;padding:0px;background:#fff url(pagenum2.gif) no-repeat;width:50px;height:21px;}
.pager.style3 ul li.pre{width:18px;background-position:-5px -405px;}
.pager.style3 ul li.pre-empty{background-position:-5px -463px;}
.pager.style3 ul li.next{background-position:-9px -237px;}
.pager.style3 ul li.next-empty{background-position:-9px -272px;}
.pager.style3 ul li.recordCount{border:none;}
.pager.style3 ul li.first-empty:hover,
.pager.style3 ul li.pre-empty:hover,
.pager.style3 ul li.next-empty:hover,
.pager.style3 ul li.last-empty:hover{border:1px solid #CCCCCC;}

/*2012-10-12*/
.pager_box{margin-top: 15px; text-align: center;}

你可能感兴趣的:(分页1 - 前端 ol.pager)