2017-08-15 4 views
0

私は曜日イベント予約のためにfullcalendarを使用しています。特定の日付に基づいて色を変更したいのですが、カレンダー全体の色をレンダリングします。 。あなたは正しく$.inArrayを使用していないdayRenderは指定された日付にfullcalendarで正しく機能していません

dayRender: function (date, cell) { 
    var disabledDates = ["2017-08-17","2017-08-23"]; 
    if ($.inArray(date.format("YYYY-MM-DD"),disabledDates)) { 
     //alert("success"); 
     cell.css("background-color", "green"); 
    } 
} 

答えて

0

はここでは、コードです。 trueまたはfalseを返しません。ifステートメントを解決するために使用します。代わりに、最初に一致する値を見つけるインデックスを表す整数を返します。一致するものが見つからない場合は-1を返します。 JavaScriptはfalseのよう緩く等しい0(すなわち0 == falseが、0 !== false)を扱い、trueに緩くと同等の他のすべての数値ため

あなたの問題が発生しています。従って$.inArray0以外のものを返す場合(つまり、最初の配列インデックスの値と一致する場合は0が返されます)、ifステートメントは、trueを返したものとして扱われ、その結果バックグラウンドカラーが変更されます。だからこそ、それは2017-08-17を除くすべての人のために変更されています。

dayRender: function(date, cell) { 
    var disabledDates = ["2017-08-17", "2017-08-23"]; 
    if ($.inArray(date.format("YYYY-MM-DD"), disabledDates) > -1) { 
    console.log(date.format("YYYY-MM-DD")); 
    cell.css("background-color", "green"); 
    } 
} 

は、より詳細な説明についてはhttps://api.jquery.com/jQuery.inArray/を参照してください:

このバージョンでは、インデックスのリターンは、背景色を設定する前に> -1(整数ではなく、ブール値)であることをテストし、正常に動作します。

+1

説明をいただきありがとうございます。その作業! – Jason

+0

問題ありません、喜んで助けてください。それは常にドキュメントを読むことを支払う! :-) – ADyson

関連する問題