簡體   English   中英

"<i>How i can set date picker range with in a financial year based on the document date?<\/i>如何根據文檔日期在財政年度中設置日期選擇器范圍?<\/b> <i>Im using JQUERY to do this<\/i>我使用 JQUERY 來執行此操作<\/b>"

[英]How i can set date picker range with in a financial year based on the document date? Im using JQUERY to do this

我想根據文檔日期在財政年度中設置我的日期選擇器范圍。我得到了文檔日期,但是我想在文檔處於編輯模式並且僅適用於特定日期部分時進行此操作。

 <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>

您可以為此使用setStartDatesetEndDate方法。

該代碼將是這樣的

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

要么

您可以使用數據屬性data-date-start-datedata-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);

您可以使用startDateendDate設置來實施開始日期和結束日期,但是您需要創建一個函數來首先獲取會計年度范圍:

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;
}

然后,通過startDateendDate屬性將上述函數分配給datepicker實例(除了日期字符串外,它們還接受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          
});

注意:

如果您有多個日期選擇器來處理日歷選擇,請從最近的元素開始更改startDateendDate的選擇器(例如,使用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" })

這是我的問題的正確答案@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
        });
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;
    }
    console.log({startDate : startYear+"-03-01", endDate: endYear+"-03-31" });
    return {startDate : startYear+"-03-01", endDate:  endYear+"-03-31" };
}

$(document).ready(function () {
  $('.datepicker').datepicker({
      format: 'yyyy-mm-dd',
      maxViewMode: 0,
      todayBtn: "linked",
      clearBtn: true,
      autoclose: true,
      todayHighlight: true,
      startDate: getCurrentFinancialYear($('input.datepicker').val()).startDate,
      endDate: getCurrentFinancialYear($('input.datepicker').val()).endDate
  });
}); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM