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 );
}
});
});
現在の日付より前の日付を無効にする方法を教えてください。
新しい日付オブジェクトを作成し、datepickersを初期化するときに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/
DateToday変数を宣言し、Date()関数を使用して設定します。次に、その変数を使用して、datepickerのパラメーターであるminDateに割り当てます。
var dateToday = new Date();
$(function() {
$( "#datepicker" ).datepicker({
numberOfMonths: 3,
showButtonPanel: true,
minDate: dateToday
});
});
それだけです...上記の答えは本当に役に立ちました...
$('#datepicker-dep').datepicker({
minDate: 0
});
minDate:0
は私のために働きます。
「minDate」オプションを使用して、許可される最も早い日付を制限します。値「0」は今日(今日から0日)を意味します。
$(document).ready(function () {
$("#txtdate").datepicker({
minDate: 0,
// ...
});
});
ここのドキュメント: http://api.jqueryui.com/datepicker/#option-minDate
これに追加するだけです:
ユーザーが手動で入力するのを防ぐ過去の日付も必要な場合、これは可能な解決策です。これが私たちがやったことです(@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);
}
});
これは、ユーザーが過去の日付を手動で入力した場合に、値を今日の日付に変更することです。
ライブデモ 、これを試して、
$('#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);
}
});
これはこれを行う簡単な方法です
$('#datepicker').datepicker('setStartDate', new Date());
また、将来の日を無効にすることができます
$('#datepicker').datepicker('setEndDate', new Date());
コードを置き換えるだけです:
古いコード:
$("#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
});
選択可能な最小日付。 null
に設定すると、最小値はありません。
複数のタイプがサポートされています:
日付:最小日付を含む日付オブジェクト。
Number:今日からの日数。たとえば、2
は今日からのtwo days
を表し、-1
はyesterday
を表します。
String:dateFormat
オプションで定義された形式の文字列、または相対日付。
相対日付には、値と期間のペアを含める必要があります。有効な期間は、y
の場合はyears
、m
の場合はmonths
、w
の場合はweeks
、d
の場合はdays
です。たとえば、+1m +7d
は、today
からのone month and seven days
を表します。
今日以外の過去の日付を表示しないために
$('#datepicker').datepicker({minDate: 0});
datepickerのstartDate属性を設定し、動作します。以下は動作コードです
$(function(){
$('#datepicker').datepicker({
startDate: '-0m'
//endDate: '+2d'
}).on('changeDate', function(ev){
$('#sDate1').text($('#datepicker').data('date'));
$('#datepicker').datepicker('hide');
});
})
"mindate"属性を使用して、jquery datepickerで渡された日付を無効にする必要があります。
minDate:new Date()またはminDate: '0'がこのキーです。
Ex:
$(function() {
$( "#datepicker" ).datepicker({minDate: new Date()});
});
OR
$(function() {
$( "#datepicker" ).datepicker({minDate: 0});
});
startDate: new Date()
を設定することにより
$('.date-picker').datepicker({
defaultDate: "+1w",
changeMonth: true,
numberOfMonths: 1,
...
startDate: new Date(),
});
このような変数に現在の日付を宣言する必要があります
$(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)
});
})
$( "#date" ).datetimepicker({startDate:new Date()}).datetimepicker('update', new Date());
new Date()
:以前の日付がロックされている今日の日付を取得する関数。 100%働く
前の日付を無効にする機能、柔軟な週末(土曜日、日曜日のような)を無効にする機能を作成しました
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日です。土曜日と日曜日は無効になっています。