jquery UI Datepickerの時刻制御の使い方(最終版)_jquery

WBOY
リリース: 2016-05-16 15:33:22
オリジナル
1208 人が閲覧しました

最近のプロジェクトで日付コントロールを使用しましたが、それを書き留めて全員と共有し、開始時刻と終了期間を 3 日以内に設定します。時間をクリアしたり、時間を再選択したりする機能:
まずは 2 つのレンダリングをお見せします

この例では、私が制御する開始時刻と終了時刻は 3 日です。つまり、開始時刻と終了時刻の間の期間は 3 日を超えることはできません。

具体的にはどのように実装すればよいでしょうか?詳細な説明はコード内にあります。

最初のステップは、コントロール js を導入することです。ここには 2 つあります。1 つは jquery.js、もう 1 つは jquery-ui-datepicker.js、そしてもちろん、スタイル ファイルを導入します。 🎜>

<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" />

ログイン後にコピー

ステップ 2: テキスト入力ボックス、テキスト タイプの入力を作成します。私のデモには、ボタン応答イベント であるクリア時間の設定も含まれています。

<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>
ログイン後にコピー
内部の値については心配しないでください。これは、クエリ後にページが更新されたときに、タイム ボックスに選択された時間値が残るように、私がプロジェクトで書いたコードです。 。

次のコードは日付コントロールを呼び出すためのコードです。

$(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); 
  }
 });
});

ログイン後にコピー
次に、皆さんの便宜のために、上記のコードに getTimeByDateStr(XXX) メソッドのコードを投稿しましょう。このコードは非常に単純で、誰もが一目で理解できると思います。

//根据日期字符串取得其时间
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();
}

ログイン後にコピー
コードで日付コントロールの使用を実装できるようになり、開始時刻と終了時刻が 3 日以内に制限されます。たとえば、開始時刻を 2014-03-27 として選択した場合、終了時刻は 3 日以内に制限されます。 27、28、29。オプションで、残りの日付はクリックできません。終了時刻を 28 として選択した場合、開始時刻は 28、27、26 のみになります。

ステップ 3: クリア ボタンを見てください。クリア ボタンは、時間選択ボックス の値をクリアします。これは非常に簡単に実装できます。

//清空日历控件
function cleaPrevInput(objs){
 //清空输入框中的值,但是仅仅是清空了值而已,时间控件的选值限制还在的
 $(objs).prev().val("");
 //如果开始时间和结束时间都清空了,这时应该是你选择的那个框中是没有时间限制的,也就是说可以随便选择日期
 if($('#start').val()=="" && $('#end').val()==""){
 var dates = $("#start,#end");
 //调用datepicker封装的api,使刚刚设置的开始时间和结束时间为空,这样就可以选择任意日期了
 dates.datepicker("option", "minDate", null);
 dates.datepicker("option", "maxDate", null);
 }
}
ログイン後にコピー
コントロールを使用するだけであれば、時間制限を設定する必要がなく非常に簡単です。上記のコードはほとんどの日付選択のニーズに使用できますが、何か特別な場合はまだ確認する必要があります。そのとき、私は日付コントロールの値をクリアするためだけに API を長時間チェックしました。これは、dates.datepicker("option", "maxDate", null) です。まだ全員が必要です。十分な忍耐力を持つこと。

以上でjquery UI Datepickerの時間コントロールの紹介はひとまず終わりました。今後関連記事があれば随時紹介していきます。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート