静态传递数组时我得到正确的结果(禁用特定星期),但在传递动态数组时不起作用。我正在从 PHP 读取字符串并将其转换为数组并传递给日期选择器。如果已检查动态数组是否为数组,并且该值也..它总是给出if ($.inArray(day, daysArray) != -1)
是-1。我已经检查了daysArray.length
值,也是 3。
它适用于daysToDisable
阵列,不适用于daysArray
阵列。两个数组值相同。
任何机构都可以帮助我。我不明白为什么它不起作用。
$(function () {
var days="<?php echo $newstr; ?>";
var daysArray=days.split(' ');alert(daysArray); // not working for this array.Here the out of this array is [2,4,5] same as below array.
var daysToDisable = [2, 4, 5]; //Working for this value.
$('#txtDate').datepicker({
beforeShowDay: disableSpecificWeekDays
});
function disableSpecificWeekDays(date) {
var day = date.getDay();
for (i = 0; i < daysToDisable.length; i++) {
if ($.inArray(day, daysToDisable) != -1) {
return [false];
}
}
return [true];
}
})
它
之所以发生,是因为在转换 PHP 字符串时,它正在生成
["2", "4", "5"]
不[2, 4, 5]
试试这个
var daysToDisable = <?php echo json_encode(explode(' ',$newstr), JSON_NUMERIC_CHECK); ?>;
而不是
var days="<?php echo $newstr; ?>";
var daysToDisable=days.split(' ');alert(daysArray);
我想我发现了问题
var daysArray=days.split(' ');
之后,您的 daysArray 将具有像 ["1","2","3"]
这样的数组数据,但我们需要数据在 [1,2,3]
中。
您的最终代码可能如下所示
$(function () {
var days="<?php echo $newstr; ?>";
var daysArray=days.split(' ');alert(daysArray); // not working for this array.Here the out of this array is [2,4,5] same as below array.
for (day in daysArray ) {
daysArray[day] = parseInt(daysArray[day], 10);
}
//var daysToDisable = [2, 4, 5]; //Working for this value.
$('#txtDate').datepicker({
beforeShowDay: disableSpecificWeekDays
});
function disableSpecificWeekDays(date) {
var day = date.getDay();
for (i = 0; i < daysArray.length; i++) {
if ($.inArray(day, daysArray) != -1) {
return [false];
}
}
return [true];
}
})
工作小提琴