jQuery 날짜 선택기-과거 날짜 비활성화


89

UI 날짜 선택기를 사용하여 날짜 범위를 선택하려고합니다.

시작 / 끝 필드에서 사람들은 현재 날짜 이전의 날짜를 보거나 선택할 수 없어야합니다.

이것은 내 코드입니다.

$(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 당신이 datepickers을 초기화 할 때, 당신은 단지 minDate을 설정해야합니다
니콜라 Peluchetti

showAnim:"",날짜 선택기 설정에 추가 하여 선택시 변경되는 성가신 월과 연도를 제거 할 수 있습니다.
Misiu

스크립트를 사용했지만 "Uncaught ReferenceError : $ is not defined"오류가 발생합니다. 어떻게 고칠까요?
mable george

@NicolaPeluchetti 이것은 정확히 내가 필요한 것이지만 asp : Textbox에서 사용할 수 있습니까? 시도했지만 작동하지 않습니다.해야 할 특정 변경 사항이 있습니까? 미리 감사드립니다
wolfQueen

74

dateToday 변수를 선언하고 Date () 함수를 사용하여 설정합니다. 그런 다음 해당 변수를 사용하여 datepicker의 매개 변수 인 minDate에 할당합니다.

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

그게 다야 ... 위의 답변은 정말 도움이되었다 ... 계속해서 얘들 아 ..


명확하고 직접적인 답변 ..Thanks
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 옵션 으로 정의 된 형식의 문자열 또는 상대 날짜입니다.
상대 날짜는 값과 기간 쌍을 포함해야합니다. 유효 기간은 yfor years, mfor months, wfor weeksdfor days입니다. 예를 들어 +1m +7done month and seven days에서 나타납니다 today.

오늘 이외의 이전 날짜를 표시하지 않으려면

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

2

jquery datepicker에서 전달 된 날짜를 비활성화하려면 " mindate "속성을 사용해야합니다.

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 % 작동


0

당신은 단순히 사용할 수 있습니다

startDate: 'today'

그것은 나를 위해 잘 작동합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.