/* * 分页函数 * page 请求的页面 * rows 每页记录数 * queryStr 被查找的字符串 * colStr 被查找的字段,为空则查找所有的字段 * who 分页的对象,就是struts-config.xml 配置的path(无'/') * return tbody里的数据,以及对这些数据操作的功能,最后一定要加上(return;),否则会重复的调用getDate()方法 */ function getDate(page,rows,queryStr,colStr,who,w,h){ if(who=="" || who=="undefined"){ alert("请在参数中添加要查找的对象名称"); return ; } //请求数据的地址 var url="../"+who+".do?page="+page+"&rows="+rows; if(queryStr!="" || queryStr!="undefined") url=url+"&queryStr="+queryStr; if(colStr!="" || colStr!="undefined") url=url+"&colStr="+colStr; //将地址统一转成ISO,在服务端在统一转回UTF-8(汉字在不同浏览器中编码不同,若不统一编码地址,则在服务器无法解析多种编码同时共存的情况) url=encodeURI(url); //ajax前,使背景变灰等待,阻止用户进一步操作 $(".mask").css("display","block").css("width","102%").css("height","100%"); $(".mask-msg").css("display","block").css("top","49%").css("left","44%"); $.ajax({ url: url, type: 'POST', data: null, timeout: 10000, error: function(){ alert('加载数据出错~'); $("#pageNum").val(0); $("#fromNum").html(0); $("#toNum").html(0); $("#totalNum").html(0); $("#totalPage").html(0); $(".mask").css("display","none"); $(".mask-msg").css("display","none"); }, success: function(date){ var objs=eval(date); total=objs.total; if(objs.total==0) { $("#tDate tr").remove(); $("#tDate").append("<tr><td colspan=7>没有记录~</td></tr>"); $("#pageNum").val(0); $("#fromNum").html(0); $("#toNum").html(0); $("#totalNum").html(0); $("#totalPage").html(0); $(".mask").css("display","none"); $(".mask-msg").css("display","none"); return ; } $("#tDate tr").remove(); //表的第一列显示行号 var lineNum=1; //表的第一列显示背景色为标题栏颜色 var lineCSS=0; //得到thead th 中定义的所有tName,用户获取json数据,为obj对象的下标 var tName=gettNames(); for(var i in objs.rows){ var obj=objs.rows[i]; //存储每行的信息 var outPut=""; //隔行换色 if(lineNum%2==0) outPut+="<tr class=alt><td>"+lineNum+"</td>" else outPut+="<tr><td>"+lineNum+"</td>" //由tName作为下标获取obj中的json数据存储到各数据列中 for(var t=0;t<tName.length;t=t+1){ outPut+="<td>"+obj[tName[t]]+"</td>"; } //定义操作,此处可能对函数的兼容性有破坏性 outPut+="<td><div align=center><a href=# onclick=openWin('../"+who+".do?command=updateDetail&num="+obj[tName[0]]+"','updateReport',"+w+","+h+");>查看</a>" +"      <a href=# onclick=openWin('../"+who+".do?command=updateInput&num="+obj[tName[0]]+"','update"+who+"',"+w+","+h+");>修改</a>" +"      <a href=# onclick=del('../"+who+".do?command=del"+who+"&num="+obj[tName[0]]+"',"+page+");>删除</a></div></td></tr>"; $("#tDate").append(outPut); //首列标题色 $("tbody tr td:eq("+lineCSS+")").css("background","#E8ECE8").css("padding","0px").css("text-align","center"); //行数自曾 lineNum=lineNum+1; //跳到下一行的首列 lineCSS=lineCSS+tName.length+2; } //补充填满表格 var keepOn=lineNum; if(keepOn<=rows){ for(var i=0;i<=rows-keepOn;i=i+1){ //存储每行的信息 var outPut=""; //隔行换色 if(lineNum%2==0) outPut+="<tr class=alt><td>"+lineNum+"</td>"; else outPut+="<tr><td>"+lineNum+"</td>"; for(var t=0;t<tName.length+1;t=t+1) outPut+="<td></td>"; outPut+="</tr>"; $("#tDate").append(outPut); $("tbody tr td:eq("+lineCSS+")").css("background","#E8ECE8").css("padding","0px").css("text-align","center"); //行数自曾 lineNum=lineNum+1; //跳到下一行的首列 lineCSS=lineCSS+tName.length+2; } } var preClickIndex=-1; $("#tDate tr:odd").mouseover(function(){ $(this).removeClass("alt"); if(!$(this).hasClass("beClick")) $(this).addClass("over"); }).mouseout(function(){ $(this).removeClass("over"); if(!$(this).hasClass("beClick")) $(this).addClass("alt"); }); $("#tDate tr:even").mouseover(function(){ if(!$(this).hasClass("beClick")) $(this).addClass("over"); }).mouseout(function(){ $(this).removeClass("over"); }); $("#tDate > tr").click(function(){ if(preClickIndex!=-1){ $("#tDate > tr:eq("+preClickIndex+")").removeClass("beClick"); if(preClickIndex%2==1) $("#tDate > tr:eq("+preClickIndex+")").addClass("alt"); } $(this).addClass("beClick"); //index()方法,返回当前子元素所在位置 preClickIndex=$( "#tDate tr" ).index($(this)[0]); }); //总页数 if(total%rows==0) totalPage=parseInt(total/rows); else totalPage=parseInt(total/rows)+1; //设置index.jsp页面相应地点的值 $("#pageNum").val(page); $("#fromNum").html((page-1)*rows); $("#toNum").html(page*rows); $("#totalNum").html(total); $("#totalPage").html(totalPage); $(".mask").css("display","none"); $(".mask-msg").css("display","none"); } }); //(重要!)否则当点击下一页或上一页按钮时,页面会级数的执行,由1-2-4-8 return ; } //响应用户请求函数,不放到getDate()中主要是因为放入则出错,具体原因和表现,忘了 function opt(page,rows,queryStr,colStr,who,w,h){ //设置跳转到目的页 $("#pageNum").keyup(function(event){ var keycode=event.which; if(keycode==13){ setPage=parseInt($(this).val()); if(setPage==page) return ; if(setPage>totalPage) page=totalPage; else page=setPage; getDate(page,rows,queryStr,colStr,who,w,h); } }); $("#reloadPage").click(function(){ getDate(page,rows,queryStr,colStr,who,w,h); }); $("#nextPage").click(function(){ if(page==totalPage) return ; page=page+1; getDate(page,rows,queryStr,colStr,who,w,h); }); $("#prevPage").click(function(){ if(page==1) return ; page=page-1; getDate(page,rows,queryStr,colStr,who,w,h); }); $("#lastPage").click(function(){ if(total%rows==0) totalPage=parseInt(total/rows); else totalPage=parseInt(total/rows)+1; if(page==totalPage) return ; page=totalPage; getDate(page,rows,queryStr,colStr,who,w,h); }); //添加元素完成后,跳转到最后一页,与$("#lastPage").click()区别是当在最后一页添加记录时仍然会刷新页面 $("#lastPage").dblclick(function(){ if(total%rows==0) totalPage=parseInt(total/rows); else totalPage=parseInt(total/rows)+1; page=totalPage; queryStr=""; colStr=""; getDate(page,rows,queryStr,colStr,who,w,h); }); $("#firstPage").click(function(){ if(page==1) return ; page=1; getDate(page,rows,queryStr,colStr,who,w,h); }); $("#setRows").change(function(){ rows=parseInt($(this).val()); page=1; $.cookie('pageSize',null,{ path: '/' }); var date = new Date(); date.setTime(date.getTime() + (1 * 24 * 60 * 60 * 1000)); $.cookie('pageSize',rows,{ path: '/', expires: date }); getDate(page,rows,queryStr,colStr,who,w,h); }); $("#SIMsearch").click(function(){ var QueryStr=$("#SearchStr").val(); queryStr=$.trim(QueryStr); colStr=$("#listColumn").val(); page=1; getDate(page,rows,queryStr,colStr,who,w,h); }); $("#SearchStr").keyup(function(event){ var keycode=event.which; if(keycode==13){ $("#SIMsearch").click(); } }); $("#addBut").click(function(){ openWin("/test2/"+who+"/add.jsp","add"+who,w,h); }); getDate(page,rows,queryStr,colStr,who,w,h); } //日期验证 function validateCNDate( strValue ) { var objRegExp = /^\d{4}(\-|\/|\.)\d{1,2}\1\d{1,2}$/ if(!objRegExp.test(strValue)) return false; else{ var arrayDate = strValue.split(RegExp.$1); var intDay = parseInt(arrayDate[2],10); var intYear = parseInt(arrayDate[0],10); var intMonth = parseInt(arrayDate[1],10); if(intMonth > 12 || intMonth < 1) { return false; } var arrayLookup = { '1' : 31,'3' : 31, '4' : 30,'5' : 31,'6' : 30,'7' : 31, '8' : 31,'9' : 30,'10' : 31,'11' : 30,'12' : 31} if(arrayLookup[parseInt(arrayDate[1])] != null) { if(intDay <= arrayLookup[parseInt(arrayDate[1])] && intDay != 0) return true; } if (intMonth-2 ==0) { var booLeapYear = (intYear % 4 == 0 && (intYear % 100 != 0 || intYear % 400 == 0)); if( ((booLeapYear && intDay <= 29) || (!booLeapYear && intDay <=28)) && intDay !=0) return true; } } return false; } function checkDouble(obj){ var v=obj.val(); var value=$.trim(v); if(v=="" || v==null || isNaN(v)){ obj.val(""); obj.get(0).select(); alert("请输入数字"); return false; } } function openWin(url,name,w,h,s){ sb ="1"; l = (screen.width - w)/2; t = (screen.height - h)/2; sFeatures = "left="+ l +",top="+ t +",height="+ h +",width=" +w+ ",center=1,scrollbars=" + sb + ",status=0,directories=0,channelmode=0"; //将地址都转成IOS编码,反正传递参数时含有汉字时,不同的浏览器会用不同的编码传递,导致服务端出错 var url=encodeURI(url); openwin = window.open(url , name , sFeatures ); if (!openwin.opener) openwin.opener = self; openwin.focus(); return openwin; } function del(url,page){ var c = "你确认要删除记录吗?"; if(confirm(c)){ var url=encodeURI(url); $.post(url,null,function(data){ total=total-1; //总页数 if(total%rows==0) totalPage=parseInt(total/rows); else totalPage=parseInt(total/rows)+1; if(page>totalPage) $("#lastPage").click(); else $("#reloadPage").click(); }); } } function gettNames(){ var size=$("#tt thead th").size(); var tNames=new Array; for(var i=1;i<size-1;i=i+1) tNames[i-1]=$("#tt thead th:eq("+i+")").attr("tName") return tNames; } function sort(index,who,w,h){ //一行总共有多少列 var tdNums=$("#tDate tr:first").children().size(); //总共多少行,包括空行 var rows=$("#tDate").children().size(); //存储每行实际数据(砍头去尾) //保存遍历每行的数据值 var allDate=new Array(); //非空行数 var realLength=0; //取得所有的数据已数组的形式保存到allDate中,取得的数据与上面ajax传输过来的内容一样 for(var i=0;i<rows;i=i+1){ var trDate=new Array(tdNums-2); for(var j=1;j<tdNums-1;j=j+1){ //去掉第一行:序号和最后一行:操作。 trDate[j-1]=$("#tDate tr:eq("+i+") td:eq("+j+")").html(); } //为空行则不添加,判断标准,第一行,也就是num字段为空,因为num为主键,不能为空,所以以后的应用就是判断主键列是否为空 if($("#tDate tr:eq("+i+") td:eq(1)").html()!=null && $("#tDate tr:eq("+i+") td:eq(1)").html()!=""){ //替换点击要排序的列与第一列的数据 swap(trDate,0,index); //保存替换后的数据 allDate[i]=trDate; realLength=realLength+1; } } //排序 allDate.sort(); var FinalDate=new Array(realLength); //把排序后的数组中的每行数据中已对换的数据对换回来。 for(var i=0;i<realLength;i=i+1){ var getTrDate=allDate[i]; swap(getTrDate,index,0); FinalDate[i]=getTrDate; } //为del函数要传递的参数,使删除完后跳回原页 var page=$("#pageNum").val(); $("#tDate tr").remove(); //表的第一列显示行号 var lineNum=1; //表的第一列显示背景色为标题栏颜色 var lineCSS=0; for(var i in FinalDate){ var obj=FinalDate[i]; //存储每行的信息 var outPut=""; //隔行换色 if(lineNum%2==0) outPut+="<tr class=alt><td>"+lineNum+"</td>" else outPut+="<tr><td>"+lineNum+"</td>" //由tName作为下标获取obj中的json数据存储到各数据列中 for(var t=0;t<tdNums-2;t=t+1){ outPut+="<td>"+obj[t]+"</td>"; } //定义操作,此处可能对函数的兼容性有破坏性 outPut+="<td><div align=center><a href=# onclick=openWin('../"+who+".do?command=updateDetail&num="+obj[0]+"','updateReport',"+w+","+h+");>查看</a>" +"      <a href=# onclick=openWin('../"+who+".do?command=updateInput&num="+obj[0]+"','update"+who+"',"+w+","+h+");>修改</a>" +"      <a href=# onclick=del('../"+who+".do?command=del"+who+"&num="+obj[0]+"',"+page+");>删除</a></div></td></tr>"; $("#tDate").append(outPut); //首列标题色 $("tbody tr td:eq("+lineCSS+")").css("background","#E8ECE8").css("padding","0px").css("text-align","center"); //行数自曾 lineNum=lineNum+1; //跳到下一行的首列 lineCSS=lineCSS+tdNums; } var keepOn=realLength; if(keepOn<rows){ for(var i=0;i<rows-keepOn;i=i+1){ //存储每行的信息 var outPut=""; //隔行换色 if(lineNum%2==0) outPut+="<tr class=alt><td>"+lineNum+"</td>"; else outPut+="<tr><td>"+lineNum+"</td>"; for(var t=0;t<tdNums-1;t=t+1) outPut+="<td></td>"; outPut+="</tr>"; $("#tDate").append(outPut); $("tbody tr td:eq("+lineCSS+")").css("background","#E8ECE8").css("padding","0px").css("text-align","center"); //行数自曾 lineNum=lineNum+1; //跳到下一行的首列 lineCSS=lineCSS+tdNums; } } var preClickIndex=-1; $("#tDate tr:odd").mouseover(function(){ $(this).removeClass("alt"); if(!$(this).hasClass("beClick")) $(this).addClass("over"); }).mouseout(function(){ $(this).removeClass("over"); if(!$(this).hasClass("beClick")) $(this).addClass("alt"); }); $("#tDate tr:even").mouseover(function(){ if(!$(this).hasClass("beClick")) $(this).addClass("over"); }).mouseout(function(){ $(this).removeClass("over"); }); $("#tDate > tr").click(function(){ if(preClickIndex!=-1){ $("#tDate > tr:eq("+preClickIndex+")").removeClass("beClick"); if(preClickIndex%2==1) $("#tDate > tr:eq("+preClickIndex+")").addClass("alt"); } $(this).addClass("beClick"); //index()方法,返回当前子元素所在位置 preClickIndex=$( "#tDate tr" ).index($(this)[0]); }); trDate=null; allDate=null; FinalDate=null; return ; } function swap(arr,i,j){ var temp=""; temp=arr[i]; arr[i]=arr[j]; arr[j]=temp; }?