gpt4 book ai didi

kendo-ui - Kendo UI 日历多选

转载 作者:行者123 更新时间:2023-12-01 10:46:01 29 4
gpt4 key购买 nike

您好,有没有办法让 kendodatepicker 允许多选?所以选择多个日期并让它们都突出显示?

最佳答案

2016 年 8 月更新


您可以使用我的 plugin选择多个日期。

enter image description here

Demo

旧答案


在 DatePicker 中仍然没有选择多个日期的官方方法。但是,在 jQuery 的帮助下,您可以实现此功能。

HTML:

<table>
<tr>
<td style="vertical-align: initial; padding-right: 100px;">
<input id="picker" />
</td>
<td>
<div id="calendar"></div>
</td>
</tr>
</table>

CSS:

.k-state-selected {
background-color: transparent;
border-color: transparent;
background-image: none;
}

td.k-state-focused.k-state-selected {
box-shadow: none;
}

.k-state-selected > .k-link {
color: black;
}

.selected {
background-color: #F35800;
border-color: #F85A00;
background-image: none, linear-gradient(to bottom, rgba(255, 255, 255, 0.2) 0px, rgba(255, 255, 255, 0) 100%);
}

.selected > .k-link {
color: #FFF;
}

JS:

$(function() {
var day = 86400000;
var today = new Date();
//time is set to midnight for correct comparison with values from calendar
today.setHours(0, 0, 0, 0);

//data source
var selectedDates = [
today.getTime() - day,
today.getTime(),
today.getTime() + day
];

//DatePicker with multiselection
initPicker($('#picker').kendoDatePicker(), selectedDates);

//Calendar with multiselection
//initCalendar($("#calendar").kendoCalendar(), selectedDates.slice());
});

function initPicker(picker, selectedDates) {
var isInit = false;
var kendoPicker = picker.data('kendoDatePicker');

kendoPicker.bind('open', function() {
if (!isInit) {
//assuming that corresponding calendar widget has id 'picker_dateview'
var calendar = $('#' + picker.attr('id') + '_dateview > .k-calendar');

initCalendar(calendar, selectedDates, function() {
updatePicker(picker, selectedDates);
});

isInit = true;
}
});

picker.on('input change blur', function() {
updatePicker(picker, selectedDates);
});

updatePicker(picker, selectedDates);
}

function initCalendar(calendar, selectedDates, onUpdate) {
var kendoCalendar = calendar.data('kendoCalendar');

kendoCalendar.bind('navigate', function() {
setTimeout(function() {
updateCalendar(calendar, selectedDates);
}, 0);
});

updateCalendar(calendar, selectedDates);

calendar.on('click', function(event) {
var cell = $(event.target).closest('td');
var isClickedOnDayCell = cell.length !== 0 && isDayCell(cell);

if (isClickedOnDayCell) {
var date = dateFromCell(cell).getTime();
var isDateAlreadySelected = selectedDates.some(function(selected) {
return selected === date;
});

if (isDateAlreadySelected) {
selectedDates.splice(selectedDates.indexOf(date), 1);

} else {
selectedDates.push(date);
}

updateCell(cell, selectedDates);

if (onUpdate !== undefined) {
onUpdate();
}
}
});
}

function updatePicker(picker, selectedDates) {
var datesString = selectedDates.sort().reduce(function(acc, selected, index) {
var date = new Date(selected);
var formattedDate = (date.getMonth() + 1) + '/' + date.getDate() + '/' + date.getFullYear();

return acc + formattedDate + (index === (selectedDates.length - 1) ? '' : ', ');
}, '');

picker.val(datesString);
}

function updateCalendar(calendar, selectedDates) {
calendar.find('td > a').parent().each(function(i, item) {
var cell = $(item);

if (isDayCell(cell)) {
updateCell(cell, selectedDates);
}
});
}

function updateCell(cell, selectedDates) {
var isCellSelected = selectedDates.some(function(selected) {
return selected === dateFromCell(cell).getTime();
});

if (isCellSelected) {
cell.addClass('selected');

} else {
cell.removeClass('selected');
}
}

function isDayCell(cell) {
return /^\d{1,2}$/.test(cell.find('a').text());
}

function dateFromCell(cell) {
return new Date(convertDataValue(cell.find('a').attr('data-value')));
}

//convert from 'YYYY/MM/DD', where MM = 0..11
function convertDataValue(date) {
var regex = /\/(\d+)\//;
var month = +date.match(regex)[1] + 1;

return date.replace(regex, '/' + month + '/');
}

实例:

https://jsfiddle.net/iyegoroff/a8ma6a1j/

关于kendo-ui - Kendo UI 日历多选,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25903960/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com