如何使用beforeShowDay突出顯示jQuery UI日期選取器中的日子。我有以下日期陣列在jQuery UI日期選取器中突出顯示日期
Array
(
[0] => 2011-07-07
[1] => 2011-07-08
[2] => 2011-07-09
[3] => 2011-07-10
[4] => 2011-07-11
[5] => 2011-07-12
[6] => 2011-07-13
)
如何使用beforeShowDay突出顯示jQuery UI日期選取器中的日子。我有以下日期陣列在jQuery UI日期選取器中突出顯示日期
Array
(
[0] => 2011-07-07
[1] => 2011-07-08
[2] => 2011-07-09
[3] => 2011-07-10
[4] => 2011-07-11
[5] => 2011-07-12
[6] => 2011-07-13
)
我解決了使用
var disabledDays = ["2011-7-21","2011-7-24","2011-7-27","2011-7-28"];
var date = new Date();
jQuery(document).ready(function() {
$("#dateselector").datepicker({
dateFormat: 'yy-mm-dd',
beforeShowDay: function(date) {
var m = date.getMonth(), d = date.getDate(), y = date.getFullYear();
for (i = 0; i < disabledDays.length; i++) {
if($.inArray(y + '-' + (m+1) + '-' + d,disabledDays) != -1) {
//return [false];
return [true, 'ui-state-active', ''];
}
}
return [true];
}
});
});
+1,需要其他選項:添加指向激活日期的鏈接以轉至事件描述,例如 –
如果比較之前獲取其值的日期並使用計數器i,則可以避免這些y,m和d變量:if .valueOf()== disabledDays [i] .valueOf()){... – Rober
@Nisanth:你的回答是做了一個不必要的循環。你不需要做'for(i = 0; i
http://jqueryui.com/demos/datepicker/#event-beforeShowDay
您在beforeShowDay與你有你的陣列中得到的日期比較日期參數,如果有匹配返回作爲定義數組上面的鏈接。
在從beforeShowDay返回的數組中,第二個元素用於設置將在日期中使用的類名,然後可以使用css爲該類設置樣式。
看看文檔。
beforeShowDay該函數採用一個日期作爲參數,並必須返回[0]等於真/假指示該日期是否是可選擇的陣列,[1]等於CSS類別名稱(S)或''作爲默認演示文稿,[2]此日期的可選彈出式工具提示。在日期選擇器顯示之前每天都會調用它。
這意味着你需要創建一個將採取的日期並返回,其中值參數數組的函數:
這裏可選的彈出提示是EXA mple:
var your_dates = [new Date(2011, 7, 7),new Date(2011, 7, 8)]; // just some dates.
$('#whatever').datepicker({
beforeShowDay: function(date) {
// check if date is in your array of dates
if($.inArray(date, your_dates)) {
// if it is return the following.
return [true, 'css-class-to-highlight', 'tooltip text'];
} else {
// default
return [true, '', ''];
}
}
});
,現在你可以添加風格突出的日期
<style>
.css-class-to-highlight{
background-color: #ff0;
}
</style>
發現的最投票的答案不工作的問題。稍微更新一些代碼以使其工作。 $ .inArray()主要搜索indexOf()。我們也無法直接比較兩個日期的平等。 參考:Compare two dates with JavaScript
function inArrayDates(needle, haystack){
var found = 0;
for (var i=0, len=haystack.length;i<len;i++) {
if (haystack[i].getTime() == needle.getTime()) return i;
found++;
}
return -1;
}
而且更新接受功能
if(inArrayDates(date, markDates) != -1) {
return [true, 'selected-highlight', 'tooltip here'];
} else {
return [true, '', ''];
}
日期在JS的對象Date
的情況下,所以你不能正確檢查,如果日期是等於使用==
或===
。
簡單的解決方案:
var your_dates = [
new Date(2017, 4, 25),
new Date(2017, 4, 23)
];
$("#some_selector").datepicker({
beforeShowDay: function(date) {
are_dates_equal = d => d.getTime() === date.getTime();
if(your_dates.some(are_dates_equal)) {
return [true, 'ui-state-active', ''];
}
return [true, '', ''];
}
})
那你想實現什麼呢? –
我想突出顯示上述日期。 –