Javascript 国家假日排除在JQuery中不起作用
我正在使用jQueryUIDatePicker和Laravel-5.8 从控制器,我将NationalHoliday作为JSON发送到视图Javascript 国家假日排除在JQuery中不起作用,javascript,jquery-ui,jquery-ui-datepicker,Javascript,Jquery Ui,Jquery Ui Datepicker,我正在使用jQueryUIDatePicker和Laravel-5.8 从控制器,我将NationalHoliday作为JSON发送到视图 public function findNationalHoliday(Request $request) { $nationalholidays = HrNationalHoliday::select('holiday_date')->whereYear('created_at', '=', date('Y'))-&
public function findNationalHoliday(Request $request)
{
$nationalholidays = HrNationalHoliday::select('holiday_date')->whereYear('created_at', '=', date('Y'))->get();
return response()->json([
'nationalholidays' => $nationalholidays,
]);
}
javascript
var holidayDays=[];
$(文档).ready(函数(){
$(文档).on('change','left_type',function(){
var air_id=$(this.val();
var a=$(this.parent();
var op=“”;
$.ajax({
键入:“get”,
url:“{{route('
get.leavecounts.all')}}',
数据:{
“id”:air\u id
},
dataType:'json',//返回的数据将是json
成功:功能(数据){
holidayDays=data.nationalholidays;
console.log(data.nationalholidays);
},
错误:函数(){
}
});
});
});
考虑如下示例:
function nationalDays(date) {
// Convert Date Object to String per Format
var myDate = $.datepicker.formatDate("yy-mm-dd", date) + " 00:00:00";
// Check for Date in Array
var needle = holidayDays.indexOf(myDate);
// Set Default
var result = [true];
// If Needle was found, make exception
if (needle >= 0) {
result = [false, "holiday", "National Holiday"];
}
// Return Results
return result;
};
请参阅更多:
$.datepicker.formatDate(格式、日期、选项)
将日期格式化为具有指定格式的字符串值
上面的示例需要一个字符串数组。您似乎正在传回一组对象。如果是这种情况,则需要调用对象键:
data.nationalholidays[0].holiday_date
这需要将功能调整为类似以下内容:
function nationalDays(date) {
// Convert Date Object to String per Format
var myDate = $.datepicker.formatDate("yy-mm-dd", date) + " 00:00:00";
// Check for Date in Array
var needle = -1;
// Iterate Array of Objects
$.each(holidayDays, function(i, d){
if(d.holiday_date == myDate){
needle = i;
}
});
// Set Default
var result = [true];
// If Needle was found, make exception
if (needle >= 0) {
result = [false, "holiday", "National Holiday"];
}
// Return Results
return result;
};
更完整的示例:
$(function() {
holidayDays = holidayDays;
function nationalDays(date) {
var myDate = $.datepicker.formatDate("yy-mm-dd", date) + " 00:00:00";
var needle = holidayDays.indexOf(myDate);
var result = [true];
if (needle >= 0) {
result = [false, "holiday", "National Holiday"];
}
return result;
};
function noWeekendsOrHolidays(date) {
var noWeekend = jQuery.datepicker.noWeekends(date);
return noWeekend[0] ? nationalDays(date) : noWeekend;
};
$('.commencement_date').datepicker({
dateFormat: 'dd-mm-yy',
changeMonth: true,
changeYear: true,
showAnim: 'slideDown',
duration: 'fast',
minDate: +1,
setDate: new Date(),
beforeShowDay: noWeekendsOrHolidays,
yearRange: new Date().getFullYear() + ':' + new Date().getFullYear(),
}).datepicker('setDate', '1');
});
你的成绩似乎有问题。我建议返回一个简单的日期字符串数组:
[“2020-08-25 00:00:00”、“2020-08-26 00:00:00”、“2020-09-25 00:00:00”,…]
。最好以匹配的格式返回日期:“dd-mm-yy”
,因此我将返回[“25-08-2020”、“26-08-2020”、“25-09-2020”…]
,否则返回一些可以轻松转换为日期对象进行比较的内容。