Home  >  Article  >  Web Front-end  >  Usage of jquery UI Datepicker time control (3)

Usage of jquery UI Datepicker time control (3)

PHPz
PHPzforward
2021-05-28 15:58:503634browse

This article is the final version of how to use the jquery UI Datepicker time control. The implemented function has a limited start time and end time span of no more than three days, and is configured with clearing time, reselection time, etc. It has certain reference value. Friends in need can refer to it. I hope it will be helpful to everyone.

Usage of jquery UI Datepicker time control (3)

Let me show you two renderings first

Usage of jquery UI Datepicker time control (3)

Usage of jquery UI Datepicker time control (3)

In the example The start time and end time I control are three days, that is, the span between the start time and the end time cannot exceed three days.

How to implement it specifically, there will be a very detailed explanation in the code, please continue reading:

The first step is to introduce the control js, here There are two, one is jquery.js, the other is jquery-ui-datepicker.js, and of course there is the introduction of style files:

<script type="text/javascript" src="js/jquery.js"></script> 
<script type="text/javascript" src="js/jquery-ui-datepicker.js"></script> 
<link rel="stylesheet" type="text/css" href="css/jquery-ui.css" />

The second step: Create a text input box, text type input, and the clearing time setting is also written in my demo, that is, a button responds to the event

<td width="35%">
    <label>开始时间:</label>
    <input type="text" name="start" id="start" value="${params.start}" readonly="true" title="日期范围不能大于3天"/>
    <input type="button" class="formButton" value="清空" onclick="cleaPrevInput(this);"/>
    <font color="red">必选*</font>
   </td>
   <td width="35%">
    <label>结束时间:</label>
    <input type="text" name="end" id="end" value="${params.end}" readonly="true" title="日期范围不能大于3天"/>
    <input type="button" class="formButton" value="清空" onclick="cleaPrevInput(this);"/>
    <font color="red">必选*</font>
   </td>

. Don’t worry about the value inside. This is the code I wrote in the project. The value is written like this so that when the page is refreshed after querying, there can still be a selected time value in the time box.

The following code is to call the date control. The code is as follows:

$(function(){
 // 获取调用控件的对象
 var dates = $("#start,#end");
 var option;
 //设置目标时间,因为例子中的开始时间和结束时间是有时间限制的
 var targetDate;
 var optionEnd;
 var targetDateEnd;
 dates.datepicker({
  showButtonPanel:false,
  //当选择时间的时候触发此事件
  onSelect: function(selectedDate){ 
   if(this.id == "start"){
   // 如果是选择了开始时间
   option = "minDate";
   //getTimeByDateStr 这个方法的代码下面会贴出来的,就是处理时间的代码
   var selectedTime = getTimeByDateStr(selectedDate);
   var minTime = selectedTime;
   targetDate = new Date(minTime);
   //设置结束时间
   optionEnd = "maxDate";
   targetDateEnd = new Date(minTime+2*24*60*60*1000);
   }else{
   // 如果是选择了结束时间
   option = "maxDate";
   var selectedTime = getTimeByDateStr(selectedDate);
   var maxTime = selectedTime;
   targetDate = new Date(maxTime);
   //设置开始时间
   optionEnd = "minDate";
   targetDateEnd = new Date(maxTime-2*24*60*60*1000);

   }
   //设置时间框中时间,比如根据选择的开始时间,限制结束时间的不可选项,dates.not(this)是js选择器使用,
   //datepicker("option", option, targetDate),这个就是日期控件封装的api了
   dates.not(this).datepicker("option", option, targetDate); 
   dates.not(this).datepicker("option", optionEnd, targetDateEnd); 
  }
 });
});

Let’s first post the code of the getTimeByDateStr(XXX) method in the above code. It is convenient for everyone to see. This code is very convenient. Simple, I believe everyone can understand it at a glance:

//根据日期字符串取得其时间
function getTimeByDateStr(dateStr){
 var year = parseInt(dateStr.substring(0,4));
 var month = parseInt(dateStr.substring(5,7),10)-1;
 var day = parseInt(dateStr.substring(8,10),10);
 return new Date(year, month, day).getTime();
}

The code can now implement the use of date controls, and the start time and end time are limited to within three days. For example, if you choose the start time as 2014-03- 27, then there are only three options for the end time: 27, 28, and 29. The other dates are not clickable. If you choose the end time to be 28, then now the start time can only be 28, 27, and 26, that's it.

Step 3: Look at the clear button. The clear button clears the value in the time selection box. This is very simple to implement:

//清空日历控件
function cleaPrevInput(objs){
 //清空输入框中的值,但是仅仅是清空了值而已,时间控件的选值限制还在的
 $(objs).prev().val("");
 //如果开始时间和结束时间都清空了,这时应该是你选择的那个框中是没有时间限制的,也就是说可以随便选择日期
 if($(&#39;#start&#39;).val()=="" && $(&#39;#end&#39;).val()==""){
 var dates = $("#start,#end");
 //调用datepicker封装的api,使刚刚设置的开始时间和结束时间为空,这样就可以选择任意日期了
 dates.datepicker("option", "minDate", null);
 dates.datepicker("option", "maxDate", null);
 }
}

It can be used now. If you just use the control, it is very simple without setting a time limit. The above code can be used for most date selection needs, but if there is something special, you still need to check the API yourself. At that time, I checked the API for a long time just to clear the value in the date control, which is this code: dates.datepicker("option", "maxDate", null). I still need everyone to have enough patience.

The above is the entire introduction to the jquery UI Datepicker time control. It has come to an end for the time being. If there are related articles in the future, I will share them with you as soon as possible.

Related recommendations:

Usage of jquery UI Datepicker time control (1)

##Usage of jquery UI Datepicker time control (2)

Recommended related video tutorials:

jQuery Tutorial (Video)

The above is the detailed content of Usage of jquery UI Datepicker time control (3). For more information, please follow other related articles on the PHP Chinese website!

Statement:
This article is reproduced at:jb51.net. If there is any infringement, please contact admin@php.cn delete