js常用共同方法
var uh_rdsp = (function(){ //获取根目录 var getContextPath = function(){ var pathName = document.location.pathname; var index = pathName.substr(1).indexOf("/"); var result = pathName.substr(0,index+1); return result; } //如果传入的没有参数 则显示迷你指示器 如果第一个参数传入null 并且有第二个参数 //则在指定时间之后关闭迷你指示器 //显示等待框 如果只传入一个参数 则默认为显示内容 //如果传入多个参数 第二个参数则是默认显示多长时间 var showWait = (function(){ var showModal = function(message){ $.showPreloader(message); } var showIndicator = function(){ $.showIndicator(); } var hideModal = function(){ $.hidePreloader(); } var hideIndicator = function(){ $.hideIndicator(); } return function(){ if(arguments[0] == 'show'){ if(arguments[1] != null){ showModal(arguments[1]); }else{ showIndicator(); } if(arguments.length > 2){ if(arguments[1] != null){ setTimeout(function(){ hideModal(); },arguments[2]); }else{ setTimeout(function(){ hideIndicator(); },arguments[2]); } } } if(arguments[0] == 'hide'){ if(arguments[1] == 'modal'){ hideModal(); } if(arguments[1] == 'indi'){ hideIndicator(); } } } })(); //显示Toast 传入2个参数 第一个参数为显示内容 第二个参数为显示时间 默认2秒 var showToast = (function(){ var showToast = function(){ if(arguments.length == 2){ $.toast(arguments[0],arguments[1]); }else{ $.toast(arguments[0]); } } return function(){ showToast.apply(null,arguments); } })(); //显示alert 可传入1个参数 显示内容 var showAlert = (function(){ var alertMsg = function(){ $.alert(arguments[0]); } return function(){ alertMsg.apply(null,arguments) } })(); //显示确认框 传入两个参数 第一个为显示信息 第二个为点击确认后的回调函数 var showConfirm = (function(){ var confirmMsg = function(){ if(arguments.length == 1){ $.confirm(arguments[0]); } if(arguments.length == 2){ $.confirm(arguments[0],arguments[1]); } } return function(){ confirmMsg.apply(null,arguments); } })(); //显示操作表 传入两个参数 第一个参数为数组 表示显示内容 第二个参数为回调方法 var showActions = (function(){ var cache = {}; var actions = function(){ var buttons1 = []; for (var i = 0,l=arguments[0].length;i < l;i++) { buttons1.push({text:arguments[0][i].text,onClick:arguments[0][i].onclick}); } var buttons2 = [{text:'取消'}]; var groups = [buttons1, buttons2]; $.actions(groups); } return function(){ actions.apply(null,arguments); } })(); //显示日期选择控件 var showDatePicker = (function(){ var cache = {}; var showDateFun = function(){ var id = arguments[0]; var showdate = arguments[1]; id.calendar({value:[showdate],minDate:showdate}); } return function(){ if(arguments[0].id in cache){ return ; } cache[arguments[0].id] = arguments[0]; showDateFun.apply(null,arguments); } })(); //parse var parseTemplate = function(dta,tmpl){ var format = { name : function(x) { if(x == null || x == "null"){ return ""; } return x; } }; return tmpl.replace(/{(\w+)}/g, function(m1, m2) { if (!m2 && m2!= "null") return ""; return (format && format[m2]) ? format[m2](dta[m2]) : dta[m2]; }); }; //ajax 请求前置方法 $(document).on('ajaxBeforeSend', function(e, xhr, options){ xhr.setRequestHeader('Authorization',"UH_RDSP_tok"+$('#token').val()); }); //发送ajax请求 传入3个参数 url:请求地址 params:请求参数 callback:回调方法 var ajaxUrl = (function(){ var count = 1; var timer ; var isFirst = true; var ajaxfun = function(){ var url = arguments[0]; var params = arguments[1]; var str = JSON.stringify(params); var callback = arguments[2]; $.ajax({ type: 'POST', url: getContextPath()+url, data: params, dataType: 'json', context: $('body'), success: function(data){ callback(data); count++; }, error: function(xhr, type){ showAlert('请求异常'); } }) } return function(){ var args = arguments; // if(isFirst){ // // return isFirst = false; // } ajaxfun.apply(null,arguments); // if(timer){ // showToast('操作过于频繁,请稍后',1000); // return false; // } // timer = setTimeout(function(){ // clearTimeout(timer); // timer = null; // ajaxfun.apply(null,args); // },2000); } })(); //发送post请求 传入2个参数 url:请求地址 params:请求参数 var postUrl = (function(){ var timer; var isFirst = true; var postFun = function(){ var url = arguments[0]; var params = arguments[1]; var temp = document.createElement("form"); temp.action = url; temp.method = "post"; temp.style.display = "none"; for (var x in params) { var opt = document.createElement("textarea"); opt.name = x; opt.value = params[x]; // alert(opt.name) temp.appendChild(opt); } var opt = document.createElement("textarea"); opt.name = 'token'; opt.value = "UH_RDSP_tok"+$('#token').val(); temp.appendChild(opt); document.body.appendChild(temp); temp.submit(); } return function(){ var args = arguments; if(isFirst){ postFun.apply(null,arguments); return isFirst = false; } if(timer){ showToast('操作过于频繁,请稍后',1000); return false; } timer = setTimeout(function(){ clearTimeout(timer); timer = null; postFun.apply(null,args); },2000); } })(); //函数截流 传入调用方法 以及延迟时间 在调用方法之后 延迟时间之后才会继续调用方法 var throttle = function(fn,interval){ var _self = fn, timer, firstTime = true; return function(){ var args = arguments, _me = this; if(firstTime){ _self.apply(_me,args); return firstTime = false; } if(timer){ showToast('操作过于频繁,请稍后',1000); return false; } timer = setTimeout(function(){ clearTimeout(timer); timer = null; _self.apply(_me,args); },interval||2000); } }; //每隔200毫秒执行一次方法 每次执行count个 var timeChunk = function(ary,fn,count){ var obj,t; var len = ary.length; var start = function(){ for (var i = 0; i < Math.min(count||1,ary.length); i++) { var obj = ary.shift(); fn(obj); } } return function(){ t = setInterval(function(){ if(ary.length === 0){ return clearInterval(t); } start(); },200); } } var sendparams = {}; var loading = false; // 最多可加载的条目 var maxItems = 200; // 每次加载添加多少条目 var itemsPerLoad = 10; // 上次加载的序号 var lastIndex = 0; var count = 1; var pullDownRefresh = function(url,params,callback){ sendparams = params; $(document).on('refresh', '.pull-to-refresh-content',function(e) { callback(url,sendparams,1); count = 1; }); } var pullUpRefresh = function(url,params,callback){ lastIndex = 0; count = 1; $(document).on('infinite', '.infinite-scroll-bottom',function() { // 如果正在加载,则退出 if (loading) return; // 设置flag loading = true; var url = arguments[0]; sendparams = arguments[1]; var callback = arguments[2]; if (lastIndex >= maxItems) { // 加载完毕,则注销无限加载事件,以防不必要的加载 $.detachInfiniteScroll($('.infinite-scroll')); // 删除加载提示符 $('.infinite-scroll-preloader').remove(); return; } var total = callback(url,sendparams,count); count++; maxItems = total; // 更新最后加载的序号 lastIndex = $('.list-container').children().length; //容器发生改变,如果是js滚动,需要刷新滚动 $.refreshScroller(); // 重置加载flag loading = false; }); } //获取明天日期 并以YYYY-MM-DD格式化 var getNowDate = function(){ var date = new Date(); date = new Date((date/1000+86400)*1000); var seperator1 = "-"; var seperator2 = ":"; var year = date.getFullYear(); var month = date.getMonth() + 1; var strDate = date.getDate(); if (month >= 1 && month <= 9) { month = "0" + month; } if (strDate >= 0 && strDate <= 9) { strDate = "0" + strDate; } // var currentdate = year + seperator1 + month + seperator1 + strDate // + " " + date.getHours() + seperator2 + date.getMinutes() // + seperator2 + date.getSeconds(); var currentdate = year + seperator1 + month + seperator1 + strDate; return currentdate; } function hasClass(obj, cls) { return obj.className.match(new RegExp('(\\s|^)' + cls + '(\\s|$)')); } function removeClass(obj, cls) { if (hasClass(obj, cls)) { var reg = new RegExp('(\\s|^)' + cls + '(\\s|$)'); obj.className = obj.className.replace(reg, ' '); } } function addClass(obj, cls) { if (!hasClass(obj, cls)) { obj.className += " " + cls; } } //传入两个参数 1.show或者hide 2.callback 城市点击回调方法 var showCitys = (function(){ var isFirst = true; var showCity = function(){ document.getElementById("bg").style.display ="block"; document.getElementById("show").style.display ="block"; } var hideCity = function(){ document.getElementById("bg").style.display ='none'; document.getElementById("show").style.display ='none'; }; var createCity = function(){ var cityshtml = '<div id="bg"></div><div id="show"><div><!--当前城市--><div class="citys_top uh_rdsp_white_background">当前城市:<img id="citysclose"src="../images/Item_Clost.png"class="pull-right"style="width: 20px;margin-right: 20px;"/></div><!--城市列表--><div class="uh_rdsp_white_background"><div class="row city_button_parentdiv"><hr class="text_titleshow_hrs"><div class="col-33 city_button_div"><input type="button"class="city_button_selected city_button_content"value="全省"/></div><div class="col-33 city_button_div"><input type="button"class="city_button city_button_content"value="太原市"/></div><div class="col-33 city_button_div"><input type="button"class="city_button city_button_content"value="大同市"/></div></div><div class="row city_button_parentdiv"><div class="col-33 city_button_div"><input type="button"class="city_button city_button_content"value="阳泉市"/></div><div class="col-33 city_button_div"><input type="button"class="city_button city_button_content"value="长治市"/></div><div class="col-33 city_button_div"><input type="button"class="city_button city_button_content"value="晋城市"/></div></div><div class="row city_button_parentdiv"><div class="col-33 city_button_div"><input type="button"class="city_button city_button_content"value="朔州市"/></div><div class="col-33 city_button_div"><input type="button"class="city_button city_button_content"value="忻州市"/></div><div class="col-33 city_button_div"><input type="button"class="city_button city_button_content"value="晋中市"/></div></div><div class="row city_button_parentdiv"><div class="col-33 city_button_div"><input type="button"class="city_button city_button_content"value="临汾市"/></div><div class="col-33 city_button_div"><input type="button"class="city_button city_button_content"value="吕梁市"/></div><div class="col-33 city_button_div"><input type="button"class="city_button city_button_content"value="运城市"/></div></div><div class="uh_rdsp_white_background city_bottom"id="citys_bottom">确 定</div></div><!--作者:123366176@qq.com时间:2016-08-02描述:确定按钮--></div></div>'; $('#htmlbody').append(cityshtml); var citys = document.getElementsByClassName('city_button_content'); var callback = arguments[1]; var selectedcityname = '全省'; var selectedcityid = ''; document.getElementById("bg").style.display ="block"; document.getElementById("show").style.display ="block"; document.getElementById('citysclose').onclick = hideCity; document.getElementById('citys_bottom').onclick = function(){ callback(selectedcityname,selectedcityid); hideCity(); }; var cleanAll = function(){ for(var i = 0;i < citys.length;i++){ removeClass(citys[i],'city_button_selected'); addClass(citys[i],'city_button') } } for(var i = 0;i < citys.length;i++){ (function(i){ citys[i].onclick = function(){ cleanAll.call(); if(citys[i].value == '全省'){ selectedcityname = '全省'; selectedcityid = ''; removeClass(citys[i],'city_button'); addClass(citys[i],'city_button_selected'); }else if(citys[i].value == '太原市'){ selectedcityname = '太原市'; selectedcityid = '1401'; removeClass(citys[i],'city_button'); addClass(citys[i],'city_button_selected'); //callback.call(null,citys[i].value,1401); }else if(citys[i].value == '大同市'){ selectedcityname = '大同市'; selectedcityid = '1402'; removeClass(citys[i],'city_button'); addClass(citys[i],'city_button_selected'); //callback.call(null,citys[i].value,1402); }else if(citys[i].value == '阳泉市'){ selectedcityname = '阳泉市'; selectedcityid = '1403'; removeClass(citys[i],'city_button'); addClass(citys[i],'city_button_selected'); //callback.call(null,citys[i].value,1403); }else if(citys[i].value == '长治市'){ selectedcityname = '长治市'; selectedcityid = '1404'; removeClass(citys[i],'city_button'); addClass(citys[i],'city_button_selected'); //callback.call(null,citys[i].value,1404); }else if(citys[i].value == '晋城市'){ selectedcityname = '晋城市'; selectedcityid = '1405'; removeClass(citys[i],'city_button'); addClass(citys[i],'city_button_selected'); //callback.call(null,citys[i].value,1405); }else if(citys[i].value == '朔州市'){ selectedcityname = '朔州市'; selectedcityid = '1406'; removeClass(citys[i],'city_button'); addClass(citys[i],'city_button_selected'); //callback.call(null,citys[i].value,1406); }else if(citys[i].value == '忻州市'){ selectedcityname = '忻州市'; selectedcityid = '1407'; removeClass(citys[i],'city_button'); addClass(citys[i],'city_button_selected'); //callback.call(null,citys[i].value,1407); }else if(citys[i].value == '晋中市'){ selectedcityname = '晋中市'; selectedcityid = '1408'; removeClass(citys[i],'city_button'); addClass(citys[i],'city_button_selected'); //callback.call(null,citys[i].value,1408); }else if(citys[i].value == '临汾市'){ selectedcityname = '临汾市'; selectedcityid = '1409'; removeClass(citys[i],'city_button'); addClass(citys[i],'city_button_selected'); //callback.call(null,citys[i].value,1409); }else if(citys[i].value == '吕梁市'){ selectedcityname = '吕梁市'; selectedcityid = '1410'; removeClass(citys[i],'city_button'); addClass(citys[i],'city_button_selected'); //callback.call(null,citys[i].value,1410); }else if(citys[i].value == '运城市'){ selectedcityname = '运城市'; selectedcityid = '1411'; removeClass(citys[i],'city_button'); addClass(citys[i],'city_button_selected'); //callback.call(null,citys[i].value,1411); } } })(i,callback,cleanAll,selectedcityname,selectedcityid) } }; return function(){ if(arguments.length == 0){ return ; } if(isFirst == true && arguments[0] == 'show'){ createCity.apply(null,arguments); isFirst = false; return ; } if(arguments[0] == 'hide'){ hideCity.apply(null,arguments); return ; } if(arguments[0] == 'show'){ showCity.apply(null,arguments); return ; } } })(); var ajaxUrlPath = (function(){ var count = 1; var timer ; var isFirst = true; var ajaxfun = function(){ var url = arguments[0]; var params = arguments[1]; var str = JSON.stringify(params); var callback = arguments[2]; $.ajax({ type: 'POST', url: $('#contextPath').val()+url, data: params, dataType: 'json', context: $('body'), success: function(data){ callback(data); count++; }, error: function(xhr, type){ showAlert('请求异常'); } }) } return function(){ var args = arguments; if(isFirst){ ajaxfun.apply(null,arguments); return isFirst = false; } if(timer){ showToast('操作过于频繁,请稍后',1000); return false; } timer = setTimeout(function(){ clearTimeout(timer); timer = null; ajaxfun.apply(null,args); },2000); } })(); return { getContextPath : getContextPath, showWait: showWait, showToast:showToast, showAlert:showAlert, showConfirm:showConfirm, showActions:showActions, showDatePicker:showDatePicker, postUrl:postUrl, ajaxUrl:ajaxUrl, throttle:throttle, getNowDate:getNowDate, showCitys:showCitys, removeClass:removeClass, addClass:addClass, pullUpRefresh:pullUpRefresh, pullDownRefresh:pullDownRefresh, parseTemplate:parseTemplate, ajaxUrlPath:ajaxUrlPath }; })();