jQuery日付ピッカー-過去の日付を無効にする


89

UIの日付ピッカーを使用して日付範囲を選択しようとしています。

from / toフィールドでは、今日より前の日付を表示または選択できないようにする必要があります。

これは私のコードです:

$(function() {
    var dates = $( "#from, #to" ).datepicker({
        defaultDate: "+1w",
        changeMonth: true,
        numberOfMonths: 1,
        onSelect: function( selectedDate ) {
            var option = this.id == "from" ? "minDate" : "maxDate",
                instance = $( this ).data( "datepicker" ),
                date = $.datepicker.parseDate(
                    instance.settings.dateFormat ||
                    $.datepicker._defaults.dateFormat,
                    selectedDate, instance.settings );
            dates.not( this ).datepicker( "option", option, date );
        }
    });
});

現在の日付より前の日付を無効にする方法を教えてもらえますか?

回答:


112

新しい日付オブジェクトを作成し、日付minDateピッカーを初期化するときのように設定する必要があります

<label for="from">From</label> <input type="text" id="from" name="from"/> <label for="to">to</label> <input type="text" id="to" name="to"/>

var dateToday = new Date();
var dates = $("#from, #to").datepicker({
    defaultDate: "+1w",
    changeMonth: true,
    numberOfMonths: 3,
    minDate: dateToday,
    onSelect: function(selectedDate) {
        var option = this.id == "from" ? "minDate" : "maxDate",
            instance = $(this).data("datepicker"),
            date = $.datepicker.parseDate(instance.settings.dateFormat || $.datepicker._defaults.dateFormat, selectedDate, instance.settings);
        dates.not(this).datepicker("option", option, date);
    }
});

編集-あなたのコメントから今は期待どおりに動作しますhttp://jsfiddle.net/nicolapeluchetti/dAyzq/1/


2
私は人々が過去の日付を選択できないようにする方法を実装したいと思います。昨日の前日などのように、今日からのみ。
Harsha MV、2011

1
@HarshaMV私は私の答えを更新しました。日付ピッカーを初期化するときにminDateを設定するだけです
Nicola Peluchetti

showAnim:"",日付ピッカー設定に追加して、選択したときに煩わしい月と年の変更を削除できます。
Misiu

スクリプトを使用しましたが、「Uncaught ReferenceError:$ is not defined」というエラーが表示されます。どうすれば修正できますか?
マーブルジョージ、2015年

@NicolaPeluchettiこれはまさに私が必要なものですが、これはasp:Textboxで使用できますか?試しましたが機能しません。何か変更を加える必要がありますか?事前にありがとう
wolfQueen 2017

74

dateToday変数を宣言し、Date()関数を使用して設定します。次に、その変数を使用して、datepickerのパラメーターであるminDateに割り当てます。

var dateToday = new Date(); 
$(function() {
    $( "#datepicker" ).datepicker({
        numberOfMonths: 3,
        showButtonPanel: true,
        minDate: dateToday
    });
});

それだけです...上記の回答は本当に役に立ちました...頑張ってください。


明確で簡単な回答..ありがとう
ASD

47
$('#datepicker-dep').datepicker({
    minDate: 0
});

minDate:0 私のために働く。


20

「minDate」オプションを使用して、許可される最も早い日付を制限します。値 "0"は今日を意味します(今日から0日後):

    $(document).ready(function () {
        $("#txtdate").datepicker({
            minDate: 0,
            // ...
        });
    });

ここのドキュメント:http : //api.jqueryui.com/datepicker/#option-minDate


8

これに追加するだけです:

ユーザーが過去の日付を手動で入力することも防ぐ必要がある場合、これは可能な解決策です。これは私たちがやったことです(@Nicola Peluchettiの回答に基づく)

var dateToday = new Date();

$("#myDatePickerInput").change(function () {
    var updatedDate = $(this).val();
    var instance = $(this).data("datepicker");
    var date = $.datepicker.parseDate(instance.settings.dateFormat || $.datepicker._defaults.dateFormat, updatedDate, instance.settings);

    if (date < dateToday) {
        $(this).datepicker("setDate", dateToday);
    }
});

これは、ユーザーが過去の日付を手動で入力した場合に、値を今日の日付に変更することです。


6

ライブデモ、これを試してください、

    $('#from').datepicker(
     { 
        minDate: 0,
        beforeShow: function() {
        $(this).datepicker('option', 'maxDate', $('#to').val());
      }
   });
  $('#to').datepicker(
     {
        defaultDate: "+1w",
        beforeShow: function() {
        $(this).datepicker('option', 'minDate', $('#from').val());
        if ($('#from').val() === '') $(this).datepicker('option', 'minDate', 0);                             
     }
   });

5

これはこれを行う簡単な方法です

$('#datepicker').datepicker('setStartDate', new Date());

また、将来の日を無効にすることもできます

$('#datepicker').datepicker('setEndDate', new Date());

1
ありがとうございました!欲求不満の時間を止めました。
lmiguelvargasf

4

datepickerのstartDate属性を設定します、それは動作します、以下は動作しているコードです

$(function(){
$('#datepicker').datepicker({
    startDate: '-0m'
    //endDate: '+2d'
}).on('changeDate', function(ev){
    $('#sDate1').text($('#datepicker').data('date'));
    $('#datepicker').datepicker('hide');
});
})

2

jQuery APIドキュメント-datepicker

選択可能な最小日付。に設定した場合null、最小値はありません。

サポートされる複数のタイプ:

日付:最小日付を含む日付オブジェクト。
数:今日からの日数。たとえば2表しtwo days今日からと-1表していますyesterday
文字列:dateFormatオプションで定義された形式の文字列、または相対日付。
相対日付には、値と期間のペアが含まれている必要があります。有効期間があるyためyearsmためmonthswためweeks、とdのためにdays。たとえば、+1m +7done month and seven daysから表しtodayます。

今日以外の過去の日付を表示しないようにするため

$('#datepicker').datepicker({minDate: 0});

2

mindate」属性を使用して、jquery datepickerで渡された日付を無効にする必要があります。

minDate:new Date()またはminDate: '0'がこのためのキーです。

Ex:

$(function() {
    $( "#datepicker" ).datepicker({minDate: new Date()});
});

または

$(function() {
  $( "#datepicker" ).datepicker({minDate: 0});
});

2

コードを置き換えるだけです:

古いコード:

$("#dateSelect").datepicker({
    showOtherMonths: true,
    selectOtherMonths: true,
    changeMonth: true,
    changeYear: true,
    showButtonPanel: true,
    dateFormat: 'yy-mm-dd'

});

新しいコード:

$("#dateSelect").datepicker({
    showOtherMonths: true,
    selectOtherMonths: true,
    changeMonth: true,
    changeYear: true,
    showButtonPanel: true,
    dateFormat: 'yy-mm-dd',
    minDate: 0
});

2

設定することにより startDate: new Date()

$('.date-picker').datepicker({
    defaultDate: "+1w",
    changeMonth: true,
    numberOfMonths: 1,
    ...
    startDate: new Date(),
});

1

以前の日付を無効にし、柔軟な週末を無効にする機能を作成しました(土曜日、日曜日のように)

jQuery UI datepickerプラグインのbeforeShowDayメソッドを使用しています。

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
var NotBeforeToday = function(date) {
		var now = new Date(); //this gets the current date and time
		if (date.getFullYear() == now.getFullYear() && date.getMonth() == now.getMonth() && date.getDate() >= now.getDate() && (date.getDay() > 0 && date.getDay() < 6) )
			return [true,""];
		if (date.getFullYear() >= now.getFullYear() && date.getMonth() > now.getMonth() && (date.getDay() > 0 && date.getDay() < 6))
			return [true,""];
		if (date.getFullYear() > now.getFullYear() && (date.getDay() > 0 && date.getDay() < 6))
			return [true,""];
		return [false,""];
	}


jQuery("#datepicker").datepicker({
		beforeShowDay: NotBeforeToday
    });

ここに画像の説明を入力してください

ここで今日の日付は9月15日です。私は土曜日と日曜日を無効にしました。


0

現在の日付をこのような変数に宣言する必要があります

 $(function() {
    var date = new Date();
    var currentMonth = date.getMonth();
    var currentDate = date.getDate();
    var currentYear = date.getFullYear();
    $('#datepicker').datepicker({
    minDate: new Date(currentYear, currentMonth, currentDate)
    });
})

0
$( "#date" ).datetimepicker({startDate:new Date()}).datetimepicker('update', new Date());

new Date():関数は今日の日付を取得し、前の日付はロックされます。100%働く


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.