1. 程式人生 > >時間框封裝、和獲取

時間框封裝、和獲取

1、js封裝

function dateCallback(form,laydate,thisTab,defaultType){//頁面選擇時間型別,設定對應顯示時間框
	form.on('select(timeType)', function(data){
		$(".timeInput").hide();
		if(data.value.split("_")[0] == -1){//時
			$("#"+thisTab+"_date"+data.value.split("_")[0]).parent().show();
			$('#'+thisTab+"_date"+data.value.split("_")[0]).attr("val",new Date().format("yyyy-MM-dd HH:00:00"));
			laydate.render({ 
				elem: '#'+thisTab+"_date"+data.value.split("_")[0],
				theme:"#4CA6FF",
				type:"datetime",
				max:new Date().format("yyyy-MM-dd HH:mm:ss"),
				value:new Date().format("yyyy-MM-dd HH:00:00"),
				btns: ['now', 'confirm'],
				done:function(value, date, endDate){
					$('#'+thisTab+"_date"+data.value.split("_")[0]).attr("val",value);
				}
			});
		}else if(data.value.split("_")[0] == 0){//日
			$("#"+thisTab+"_date"+data.value.split("_")[0]).parent().show();
			$('#'+thisTab+"_date"+data.value.split("_")[0]).attr("val",new Date().format("yyyy-MM-dd"));
			laydate.render({ 
				elem: '#'+thisTab+"_date"+data.value.split("_")[0],
				theme:"#4CA6FF",
				max:new Date().format("yyyy-MM-dd"),
				value:new Date().format("yyyy-MM-dd"),
				btns: ['now', 'confirm'],
				done:function(value, date, endDate){
					$('#'+thisTab+"_date"+data.value.split("_")[0]).attr("val",value);
				}
			});
		}else if(data.value.split("_")[0] == 1){//周
			$("#"+thisTab+"_date"+data.value.split("_")[0]).parent().show();
			$('#'+thisTab+"_date"+data.value.split("_")[0]).attr("val",new Date().format("yyyy-MM-dd"));
			laydate.render({ 
				elem: '#'+thisTab+"_date"+data.value.split("_")[0],
				theme:"#4CA6FF",
				max:new Date().format("yyyy-MM-dd"),
				value:new Date().format("yyyy-MM-dd"),
				btns: ['now', 'confirm'],
				done:function(value, date, endDate){
					$('#'+thisTab+"_date"+data.value.split("_")[0]).attr("val",value);
				}
			});
		}else if(data.value.split("_")[0] == 2){//月
			$("#"+thisTab+"_date"+data.value.split("_")[0]).parent().show();
			$('#'+thisTab+"_date"+data.value.split("_")[0]).attr("val",new Date().format("yyyy-MM"));
			laydate.render({ 
				elem: '#'+thisTab+"_date"+data.value.split("_")[0],
				theme:"#4CA6FF",
				type:"month",
				max:new Date().format("yyyy-MM"),
				value:new Date().format("yyyy-MM"),
				btns: ['now', 'confirm'],
				done:function(value, date, endDate){
					$('#'+thisTab+"_date"+data.value.split("_")[0]).attr("val",value);
				}
			});
		}else if(data.value.split("_")[0] == 3){//時段
			$("#"+thisTab+"_dateStart"+data.value.split("_")[0]).parent().show().css("width","545px");
			$("#"+thisTab+"_dateStart"+data.value.split("_")[0]).css("width","190px");
			$("#"+thisTab+"_dateEnd"+data.value.split("_")[0]).css("width","190px");
			$('#'+thisTab+"_dateStart"+data.value.split("_")[0]).attr("val",new Date().format("yyyy-MM-dd HH:00:00"));
			$('#'+thisTab+"_dateEnd"+data.value.split("_")[0]).attr("val",new Date().format("yyyy-MM-dd HH:00:00"));
			var start=laydate.render({ 
				elem: '#'+thisTab+"_dateStart"+data.value.split("_")[0],
				theme:"#4CA6FF",
				type:"datetime",
				max:new Date().format("yyyy-MM-dd HH:mm:ss"),
				value:new Date().format("yyyy-MM-dd HH:00:00"),
				btns: ['now', 'confirm'],
				done:function(value, date, endDate){
					$('#'+thisTab+"_dateStart"+data.value.split("_")[0]).attr("val",value);
					end.config.min = {
						year: date.year,
						month: date.month - 1,
						date: date.date,
						hours: date.hours,
						minutes: date.minutes,
						seconds: date.seconds
					}
				}
			});
			var end=laydate.render({ 
				elem: '#'+thisTab+"_dateEnd"+data.value.split("_")[0],
				theme:"#4CA6FF",
				type:"datetime",
				max:new Date().format("yyyy-MM-dd HH:mm:ss"),
				value:new Date().format("yyyy-MM-dd HH:00:00"),
				btns: ['now', 'confirm'],
				done:function(value, date, endDate){
					$('#'+thisTab+"_dateEnd"+data.value.split("_")[0]).attr("val",value);
					start.config.max = {
						year: date.year,
						month: date.month - 1,
						date: date.date,
						hours: date.hours,
						minutes: date.minutes,
						seconds: date.seconds
					}
				}
			});
		}else{//年
			$("#"+thisTab+"_date"+data.value.split("_")[0]).parent().show();
			$('#'+thisTab+"_date"+data.value.split("_")[0]).attr("val",new Date().format("yyyy"));
			laydate.render({ 
				elem: '#'+thisTab+"_date"+data.value.split("_")[0],
				theme:"#4CA6FF",
				type:"year",
				max:new Date().format("yyyy"),
				value:new Date().format("yyyy"),
				btns: ['now', 'confirm'],
				done:function(value, date, endDate){
					$('#'+thisTab+"_date"+data.value.split("_")[0]).attr("val",value);
				}
			});
		}
	});
	$(".timeInput").hide();
	var defaultMax;var defaultValue;var defaultType_;
	if(defaultType == "-1"){
		$("#"+thisTab+"_date-1").parent().show();
		defaultType_="datetime";
		defaultMax=new Date().format("yyyy-MM-dd HH:mm:ss");
		defaultValue=new Date().format("yyyy-MM-dd HH:00:00");
	}else if(defaultType == "0"){
		$("#"+thisTab+"_date0").parent().show();
		defaultType_="date";
		defaultMax=new Date().format("yyyy-MM-dd");
		defaultValue=new Date().format("yyyy-MM-dd");
	}else if(defaultType == "1"){
		$("#"+thisTab+"_date1").parent().show();
		defaultType_="date";
		defaultMax=new Date().format("yyyy-MM-dd");
		defaultValue=new Date().format("yyyy-MM-dd");
	}else if(defaultType == "2"){
		$("#"+thisTab+"_date2").parent().show();
		defaultType_="month";
		defaultMax=new Date().format("yyyy-MM");
		defaultValue=new Date().format("yyyy-MM");
	}else if(defaultType == "3"){
		$("#"+thisTab+"_dateStart3").parent().show().css("width","545px");
		$("#"+thisTab+"_dateStart3").css("width","190px");
		$("#"+thisTab+"_dateEnd3").css("width","190px");
		defaultType_="datetime";
		defaultMax=new Date().format("yyyy-MM-dd HH:mm:ss");
		defaultValue=new Date().format("yyyy-MM-dd HH:00:00");
	}else if(defaultType == "5"){
		$("#"+thisTab+"_date5").parent().show();
		defaultType_="year";
		defaultMax=new Date().format("yyyy");
		defaultValue=new Date().format("yyyy");
	}
	if(defaultType=="3"){
		laydate.render({
			elem: '#'+thisTab+"_dateStart3",
			theme:"#4CA6FF",
			type:defaultType_,
			max:defaultMax,
			value:defaultValue,
			btns: ['now','confirm'],
			done:function(value, date, endDate){
				$('#'+thisTab+"_dateStart3").attr("val",value);
			}
		});
		$('#'+thisTab+"_dateStart3").attr("val",defaultMax);
		laydate.render({
			elem: '#'+thisTab+"_dateEnd3",
			theme:"#4CA6FF",
			type:defaultType_,
			max:defaultMax,
			value:defaultValue,
			btns: ['now','confirm'],
			done:function(value, date, endDate){
				$('#'+thisTab+"_dateEnd3").attr("val",value);
			}
		});
		$('#'+thisTab+"_dateEnd3").attr("val",defaultMax);
	}else{
		laydate.render({
			elem: '#'+thisTab+"_date"+defaultType,
			theme:"#4CA6FF",
			type:defaultType_,
			max:defaultMax,
			value:defaultValue,
			btns: ['now','confirm'],
			done:function(value, date, endDate){
				$('#'+thisTab+"_date"+defaultType).attr("val",value);
			}
		});
		$('#'+thisTab+"_date"+defaultType).attr("val",defaultMax);
	}
}
function getElem(obj){
	var dateElem;
	if(obj.timeTypeId == -1){//時
		dateElem={
			dateType:obj.timeTypeId,
			fromDate:$(obj.inputId).attr("val"),
			toDate:$(obj.inputId).attr("val")
		}
	}else if(obj.timeTypeId == 0){//日
		dateElem={
			dateType:obj.timeTypeId,
			fromDate:$(obj.inputId).attr("val")+" 00:00:00",
			toDate:$(obj.inputId).attr("val")+" 23:59:59"
		}
	}else if(obj.timeTypeId == 1){//周
		var time=$(obj.inputId).attr("val");
		var time_=new Date(Date.parse(time.replace(/-/g,"-")));
		var now = new Date(time_); 
		var nowTime = now.getTime() ; 
		var day = now.getDay();
		var oneDayLong = 24*60*60*1000 ; 
		var MondayTime = nowTime - (day)*oneDayLong  ; 
		var SundayTime =  nowTime + (6-day)*oneDayLong ; 
		var monday = new Date(MondayTime);
		var sunday = new Date(SundayTime);
		dateElem={
			dateType:obj.timeTypeId,
			fromDate:monday.format("yyyy-MM-dd")+" 00:00:00",
			toDate:sunday.format("yyyy-MM-dd")+" 23:59:59"
		}
	}else if(obj.timeTypeId == 2){//月
		var time=$(obj.inputId).attr("val");
		var time_=new Date(Date.parse(time.replace(/-/g,"-")));
		 // 獲取當前月的第一天    
	    var start = new Date(time_);   
	    start.setDate(1);    
	    // 獲取當前月的最後一天    
	    var date = new Date(time_);    
	    var currentMonth = date.getMonth();    
	    var nextMonth = ++currentMonth;    
	    var nextMonthFirstDay = new Date(date.getFullYear(), nextMonth, 1);    
	    var oneDay = 1000 * 60 * 60 * 24;    
	    var end = new Date(nextMonthFirstDay - oneDay);    
		dateElem={
			dateType:obj.timeTypeId,
			fromDate:start.format("yyyy-MM-dd")+" 00:00:00",
			toDate:end.format("yyyy-MM-dd")+" 23:59:59"
		}
	}else if(obj.timeTypeId == 3){//時段
		dateElem={
			dateType:obj.timeTypeId,
			fromDate:$(obj.inputId[0]).attr("val"),
			toDate:$(obj.inputId[1]).attr("val")
		}
	}else if(obj.timeTypeId == 5){//年
		dateElem={
			dateType:obj.timeTypeId,
			fromDate:$(obj.inputId).attr("val")+"-01-01 00:00:00",
			toDate:$(obj.inputId).attr("val")+"-12-31 23:59:59"
		}
	}
	return dateElem;
}

2、html   (裡面的time_date0要改)

<div class='layui-form-item' id="lTop">
  <div class='layui-input-inline' style='width:80px;'>
    <label class='layui-form-label timeTypeLabel'>時間型別:</label></div>
  <div class='layui-input-inline timeBox padding'>
    <select name='time_' lay-filter='timeType' id='time_type'>
      <option value='0'>日</option>
      <option value='2'>月</option>
      <option value='3'>時段</option>
      <option value='5'>年</option></select>
  </div>
  <div class='layui-input-inline timeInput' style='width:160px;'>
    <input type='text' class='layui-input' readonly id='time_date0'></div>
  <div class='layui-input-inline timeInput' style='width:160px;'>
    <input type='text' class='layui-input' readonly id='time_date2'></div>
  <div class='layui-input-inline timeInput sd'>
    <label class='layui-form-label timeTypeLabel' style='float:left;padding:6px 0;'>開始時間:</label>
    <input type='text' class='layui-input' readonly id='time_dateStart3'>
    <label class='layui-form-label timeTypeLabel' style='float:left;padding:6px 0;'>結束時間:</label>
    <input type='text' class='layui-input' readonly id='time_dateEnd3'></div>
  <div class='layui-input-inline timeInput' style='width:160px;'>
    <input type='text' class='layui-input' readonly id='time_date5'></div>
  <div class='layui-input-inline' style='margin-left:10px;'>
    <button class='layui-btn layui-btn-sm layui-btn-normal' id="looklineSearch">查詢</button></div>
</div>

3.css

/* 日期 */
#time{overflow:hidden;position:relative;padding:5px;box-sizing:border-box;}
.timeForm{padding-bottom:5px;;border-bottom:1px solid #e7e7e7;}
.layui-form-item{margin:0;}
.layui-input-block{margin:0}
.timeBox{width:70px !important;color:#666;font-size:14px;margin-right:12px;}
.layui-form-select dl dd.layui-this{background:#4CA6FF;}
.timeTypeLabel{font-size:14px;color:#666;}
.layui-input, .layui-select, .layui-textarea{height:32px;font-size:14px;color:#666;}
.layui-form-label{padding:6px 0px;}
.layui-btn-normal{background:#59C7EF;height:32px;line-height:32px;padding:0px 15px;}
.timeInput{margin-right:0 !important;}
.layui-form-item .layui-input-inline{margin-right:0;}
.padding{padding-right:10px;}
.sd{width:485px !important;}
#time_dateStart3,#time_dateEnd3{width:160px !important;float:left;}
.btn{width:54px !important;}
/* 日期 */

4、用法

if($("#thisTab_type").val() == 3){//時間段特別處理
		elem=getElem({
			timeTypeId:$("#thisTab_type").val(),//時間型別框的值
			inputId:["#thisTab_dateStart3","#thisTab_dateEnd3"]
		});//獲取時間引數(fromDate,toDate,dataType)	
	}else{
		elem=getElem({
			timeTypeId:$("#thisTab_type").val(),//時間型別框的值
			inputId:"#thisTab_date"+$("#thisTab_type").val()
		});//獲取時間引數(fromDate,toDate,dataType)	
	}

5、效果