2016-05-24 8 views
0

私はunavilabledates配列の過去の日付と日付をブロックするコードを書いていますが、配列の2番目の要素だけがブロックされ、残りは選択可能です。どのようにそれを把握するための任意のアイデア?6Jetery datepicker date blockingが機能していませんか?

var unavailableDates = ["6-3-2016", "5-28-2016", "5-27-2016", "6-28-2016"]; 

var nowTemp = new Date(); 
var now = new Date(nowTemp.getFullYear(), nowTemp.getMonth(), nowTemp.getDate(), 0, 0, 0, 0); 

var checkin = $('#dpd1').datepicker({ 
    onRender:function(date){ 
     dmy = (date.getMonth() + 1) + "-" +date.getDate() + "-" + date.getFullYear(); 
     return (date.valueOf() < now.valueOf() || ($.inArray(dmy, unavailableDates) == 1))?'disabled':''; 
    } 
} 

出力:// 5-28-2016がブロックされ、残りは私が代わりにonRenderのbeforeShowDay機能を使用し、あなたはjQueryのUI日付ピッカーを使用すると推定

+0

配列内の最初の要素が値、$ .inArrayを(一致している場合)を返します0 – sarath

+0

コードの最後に '});がありません。' var unavailableDates'には、この配列に2回の '' 5-28-2016 ''があります。 – LoicTheAztec

+0

私は単一の要素を持っていても同じ回答を得ます –

答えて

2

ではありません。

var unavailableDates = ["2016-03-06"]; // Dates formatted the same way as the beforeShowDay formatDate() function requires it 

$('#dpd1').datepicker({ 
    beforeShowDay: function(date){ 
     var string = jQuery.datepicker.formatDate('yy-mm-dd', date); 
     return [ unavailableDates.indexOf(string) == -1 ] 
    }, 
    minDate: 0 
}); 

EDIT

エラーが見つかりました。beforeShowDay関数のformatDate( 'yy-mm-dd')は、2016-05-あなたの提供された配列は6-3-2016のような日付を持っています。これは、日付が無効にされない方法です。

更新されたコードとそれに行くためにjsfiddleを参照してください:https://jsfiddle.net/orttL83d/(月およびすべての過去の日付のこの例では、I無効26日)

+0

Bu過去の日付もブロックする必要があります。この方法を使用して過去の日付をブロックするにはどうすればよいですか? –

+0

「unavailableDates」配列に任意の日付を入力するだけで、将来の予定や過去の日付にかかわらず無効になります。 – Milanzor

+0

thtsは有効ではありません、全体として過去の日付と特定の将来の日付をブロックする必要があります –

関連する問題