我试图在datepicker中点击特定日期时触发更改。我无法弄清楚它为什么不起作用。在这个例子中,当我点击第一个数组日期(2月7日)时,没有任何反应。当我点击第二个(2月21日)时,我收到了正确的警告completed
。当我点击其他任何地方时,我会收到completed
和open
警报。
jQuery(document).ready(function($){
var pastorder = ["2/7/2018", "2/21/2018"];
function eventDays(date) {
var string = ( date.getMonth() + 1) + '/' + date.getDate() + '/' + date.getFullYear();
if (jQuery.inArray(string, pastorder) != -1){
return [true, "pastorder"];
} else {
return [true, "open" ];
}
}
jQuery('.week-picker').datepicker({
onSelect: function (dateStr) {
var date = new Date(dateStr);
var string = (date.getMonth() + 1) + '/' + date.getDate() + '/' + date.getFullYear();
if ($.inArray( string, pastorder )) { // In Pastorder array
alert( "completed" );
}
if ($.inArray( string, pastorder ) == -1) { // Not in array
alert( "open" );
}
},
beforeShowDay: eventDays
});
});
这是我的第一个codepen。
我也试图在没有运气的情况下定位css。
onSelect: function (dateStr) {
var date = new Date(dateStr);
var string = (date.getMonth() + 1) + '/' + date.getDate() + '/' + date.getFullYear();
if ($(this).hasClass( "pastorder")) {
alert( "completed" );
}
if ($(this).hasClass( "open")) {
alert( "open" );
}
},
这是我的第二个codepen。
答案 0 :(得分:2)
$.inArray( )
搜索数组中的指定值并返回其索引(如果未找到则返回-1)。
在您的情况下,$.inArray( string, pastorder)
在Javascript中日期为0
且2/7/2018
为假时返回0
,因此if块未执行。
将if条件更新为if ($.inArray( string, pastorder) > -1)
。
var pastorder = ["2/7/2018", "2/21/2018"];
jQuery('.week-picker').datepicker({
onSelect: function (dateStr) {
var date = new Date(dateStr);
var string = (date.getMonth() + 1) + '/' + date.getDate() + '/' + date.getFullYear();
if ($.inArray( string, pastorder) > -1) { // In Pastorder array
alert( "completed" );
}
if ($.inArray( string, pastorder ) == -1) { // Not in array
alert( "open" );
}
},
beforeShowDay: eventDays
});
});