Вы можете использовать настройки startDate
и endDate
для принудительного применения дат начала и окончания, но вам нужно создать функцию, чтобы сначала получить диапазон финансового года:
function getCurrentFiscalYear(date) {
var dates = {};
var docDate = new Date(date);
var month = docDate.getMonth();
if (month > 3) {
dates.sDate = new Date(docDate.getFullYear(), 3, 1);
dates.eDate = new Date(dates.sDate.getFullYear() + 1, dates.sDate.getMonth() - 1, 31);
}
else {
dates.sDate = new Date(docDate.getFullYear() - 1, 3, 1);
dates.eDate = new Date(docDate.getFullYear(), dates.sDate.getMonth() - 1, 31);
}
return dates;
}
Затем назначьте функцию вышек экземпляру datepicker через свойства startDate
и endDate
(они также принимают экземпляр JS Date
помимо строки даты):
$('input.datepicker').datepicker({
format: "dd-M-yyyy",
startDate: getCurrentFiscalYear($('input.datepicker').val()).sDate, // start date
endDate: getCurrentFiscalYear($('input.datepicker').val()).eDate, // end date
maxViewMode: 0,
todayBtn: "linked",
clearBtn: true,
autoclose: true,
todayHighlight: true
});
Примечание:
Если у вас есть несколько сборщиков дат для обработки календаря, измените селектор в startDate
и endDate
в зависимости от ближайшего элемента (например, используя closest()
, siblings()
, find()
и т. Д.)
Пример реализации можно увидеть в этой скрипке .
Примечание:
EditorFor
, содержащий htmlAttributes
параметр, работает только для MVC 5.1 и выше.Если ваша версия MVC 5.0 или ниже, используйте TextBoxFor
helper вместо:
@Html.TextBoxFor(model => model.EnquiryDateFormatted, "{0:dd-MMM-yyyy}", new { @class = "form-control newinput datepicker", @autocomplete = "off", @id="enquiryDateID" })