【发布时间】:2018-01-04 09:01:13
【问题描述】:
我的逻辑有两个步骤;首先显示/隐藏预定义的日期范围,然后禁用/启用特定日期。我试图弄清楚是否可以在不破坏和重新创建它的情况下操纵 JQuery UI Datepicker 的现有 beforeShowDay 属性。在我的示例中,函数“disableSpecificDay”是我以编程方式禁用/启用日期的地方。有什么建议?我能找到的所有示例都假设禁用/启用的具体日期是已知的。
var myPicker = $("#myDatePicker");
var excludeDates = ["01/01/2018","04/06/2018","07/05/2018","30/07/2018"];
function disableExcludedDates(date) {
for (var i = 0; i < excludeDates.length; i++) {
if (new Date(excludeDates[i]).toString() == date.toString()) {
return [false];
}
}
return [true];
}
function weekends(action) {
if (action === false) { // Hide weekends
myPicker.focus(function() { $(".ui-datepicker-week-end").hide(); });
myPicker.blur(function() { $(".ui-datepicker-week-end").hide(); });
}
else { // Show weekends
myPicker.focus(function() { $(".ui-datepicker-week-end").show(); });
myPicker.blur(function() { $(".ui-datepicker-week-end").show(); });
}
}
function disableSpecificDay() {
var dayNumber = $("#dayNumber").val();
myPicker.datepicker({
// Adjust beforeShowDay here? e.g. zero "0" will disable Sundays
});
}
$(function() {
myPicker.datepicker( {
numberOfMonths: 1,
firstDay: 1,
dateFormat: "dd/mm/yy",
beforeShowDay: disableExcludedDates
});
});
br {
line-height: 150%;
}
button, input {
width: 130px;
}
<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<input type="text" id="myDatePicker">
<button onclick="weekends(true)">Show Weekends</button>
<button onclick="weekends(false)">Hide Weekends</button>
<br />
<input type="text" id="dayNumber" placeholder="Digit 0-9">
<button onclick="disableSpecificDay()">Hide Specific Day</button>
【问题讨论】:
标签: javascript jquery jquery-ui datepicker