Как я могу установить диапазон выбора даты в финансовом году на основе даты документа?Я использую JQUERY, чтобы сделать это - PullRequest
0 голосов
/ 05 декабря 2018

Я хочу установить диапазон выбора даты в финансовом году на основе даты документа. Я получаю дату документа, но я хочу работать с этим, когда документ находится в режиме редактирования и только для определенного раздела «Дата».

 <div class="col-md-6 no-padding">
                        <div class="col-md-12">
                            @Html.LabelFor(model => model.EnquiryDateFormatted, htmlAttributes: new { @class = "control-label lblrequired" })
                        </div>
                        <div class="col-md-12">
                            @Html.EditorFor(model => model.EnquiryDateFormatted, new { htmlAttributes = new { @class = "form-control newinput datepicker", @autocomplete = "off",@id="enquiryDateID" } })
                            @Html.ValidationMessageFor(model => model.EnquiryDateFormatted, "", new { @class = "text-danger" })
                        </div>
                    </div>

это раздел HTML для выбора даты

 try {
        debugger;          
        $('input.datepicker').datepicker({
            format: "dd-M-yyyy",
            maxViewMode: 0,
            todayBtn: "linked",
            clearBtn: true,
            autoclose: true,
            todayHighlight: true             
        });

    }
    catch (e) {
        console.log(e.message);
    }

это скрипт выбора даты.

Ответы [ 3 ]

0 голосов
/ 05 декабря 2018

Вы можете использовать настройки 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" })
0 голосов
/ 05 декабря 2018

вот правильный ответ на мой вопрос @kiranvj дай мне ключ к ответу с небольшим изменением

здесь я выкладываю его код детали и код моей детали

код от @kiranvj

 function getCurrentFinancialYear(strDocDate) {
  var startYear = "";
  var endYear = "";
  var docDate = new Date(strDocDate);
  if ((docDate.getMonth() + 1) <= 3) {
    startYear = docDate.getFullYear() - 1;
    endYear = docDate.getFullYear();
  } else {
    startYear = docDate.getFullYear();
    endYear = docDate.getFullYear() + 1;
  }
  return {startDate : "01-Apr-" + startYear, endDate: "31-Mar-" + endYear };
}

и код моей части

 $('input.datepicker').datepicker({
            format: "dd-M-yyyy",
            maxViewMode: 0,
            todayBtn: "linked",
            clearBtn: true,
            autoclose: true,
            todayHighlight: true,
            startDate: getCurrentFinancialYear(enqDate).startDate,
            endDate: getCurrentFinancialYear(enqDate).endDate
        });
0 голосов
/ 05 декабря 2018

Для этого вы можете использовать методы setStartDate и setEndDate .

Код будет выглядеть примерно так

$('#yourDatePickerID').datepicker('setStartDate', '04/01/2018');
$('#yourDatePickerID').datepicker('setEndDate', '03/30/2019');

или

вы можете использовать атрибуты данных data-date-start-date и data-date-end-date

<input type="text" class="form-control" data-date-end-date=“mm/dd/yyyy”>

Используйте это, чтобы получить финансовый год

function getCurrentFinancialYear(strDocDate) {
  var startYear = "";
  var endYear = "";
  var docDate = new Date(strDocDate);
  if ((docDate.getMonth() + 1) <= 3) {
    startYear = docDate.getFullYear() - 1;
    endYear = docDate.getFullYear();
  } else {
    startYear = docDate.getFullYear();
    endYear = docDate.getFullYear() + 1;
  }
  return {startDate : "01-Apr-" + startYear, endDate: "31-Mar-" + endYear };
}

alert(getCurrentFinancialYear("4/1/2018").startDate);

Так что вашкод должен быть как

$('#yourDatePickerID').datepicker('setStartDate', getCurrentFinancialYear(enquiryDateID).startDate );
$('#yourDatePickerID').datepicker('setEndDate', getCurrentFinancialYear(enquiryDateID).endDate);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...