Jquery UI 日期选择器,beforeShowDay 错误
Jquery UI Datepicker, beforeShowDay error
我正在尝试添加从服务器禁用的天数。到目前为止,这是我的代码:
$("#startDatePicker").datepicker({
minDate: '+31',
maxDate: '+12M',
changeMonth: true,
showAnim: 'blind',
dateFormat: 'yy mm dd',
onSelect: function(dateText, inst) {
// Capture the Date from User Selection
var oldDate = new Date(dateText);
var newDate = new Date(dateText);
// Compute the Future Limiting Date
newDate.setDate(newDate.getDate() + 365);
// Set the Widget Properties
$("#endDatePicker").datepicker('option', 'minDate', oldDate);
$("#endDatePickerto").datepicker('option', 'maxDate', newDate);
}
});
$("#endDatePicker").datepicker({
minDate: '+5',
maxDate: '+12M',
changeMonth: true,
showAnim: 'blind',
dateFormat: 'yy mm dd',
onSelect: function(dateText, inst) {
// Capture the Date from User Selection
var endDate = new Date(dateText);
var startDate = new Date(dateText);
// Compute the Future Limiting Date
startDate.setDate(startDate.getDate() - 5);
// Set the Widget Properties
$("#startDatePicker").datepicker('option', 'minDate', startDate);
$("#startDatePicker").datepicker('option', 'maxDate', endDate);
}
});
选择器工作正常,直到我添加禁用天数。我从 viewbag 解析它。这是代码。
var NewArray = [];
var array = @Html.Raw(Json.Encode((@ViewBag.GetDates)));
for (var i = 0; i < array.length; i++) {
NewArray[i] = array[i];
console.log(NewArray);
}
var parsedDates = [];
for (var i = 0; i < array.length; i++) {
var d = array[i];
var unix = +d.replace(/\D/g, '');
var date = new Date(unix);
var desDate = date.getFullYear() + '/' + (date.getMonth() + 1) + '/' + date.getDate();
parsedDates.push(desDate);
}
console.log(parsedDates);
然后我将这样的日期添加到选择器中:
beforeShowDay: function (date) {
var string = jQuery.datepicker.formatDate('yy mm dd', date);
return [parsedDates.indexOf(string) === -1];
}
添加完所有内容后,选择器如下所示:
我做错了什么。
解决了。必须重建进入 beforShowDay 的日期字符串。之后一切正常。
我正在尝试添加从服务器禁用的天数。到目前为止,这是我的代码:
$("#startDatePicker").datepicker({
minDate: '+31',
maxDate: '+12M',
changeMonth: true,
showAnim: 'blind',
dateFormat: 'yy mm dd',
onSelect: function(dateText, inst) {
// Capture the Date from User Selection
var oldDate = new Date(dateText);
var newDate = new Date(dateText);
// Compute the Future Limiting Date
newDate.setDate(newDate.getDate() + 365);
// Set the Widget Properties
$("#endDatePicker").datepicker('option', 'minDate', oldDate);
$("#endDatePickerto").datepicker('option', 'maxDate', newDate);
}
});
$("#endDatePicker").datepicker({
minDate: '+5',
maxDate: '+12M',
changeMonth: true,
showAnim: 'blind',
dateFormat: 'yy mm dd',
onSelect: function(dateText, inst) {
// Capture the Date from User Selection
var endDate = new Date(dateText);
var startDate = new Date(dateText);
// Compute the Future Limiting Date
startDate.setDate(startDate.getDate() - 5);
// Set the Widget Properties
$("#startDatePicker").datepicker('option', 'minDate', startDate);
$("#startDatePicker").datepicker('option', 'maxDate', endDate);
}
});
选择器工作正常,直到我添加禁用天数。我从 viewbag 解析它。这是代码。
var NewArray = [];
var array = @Html.Raw(Json.Encode((@ViewBag.GetDates)));
for (var i = 0; i < array.length; i++) {
NewArray[i] = array[i];
console.log(NewArray);
}
var parsedDates = [];
for (var i = 0; i < array.length; i++) {
var d = array[i];
var unix = +d.replace(/\D/g, '');
var date = new Date(unix);
var desDate = date.getFullYear() + '/' + (date.getMonth() + 1) + '/' + date.getDate();
parsedDates.push(desDate);
}
console.log(parsedDates);
然后我将这样的日期添加到选择器中:
beforeShowDay: function (date) {
var string = jQuery.datepicker.formatDate('yy mm dd', date);
return [parsedDates.indexOf(string) === -1];
}
添加完所有内容后,选择器如下所示:
我做错了什么。
解决了。必须重建进入 beforShowDay 的日期字符串。之后一切正常。