禁用特定工作日不适用于 jquery 中的动态数组


Disabling specific week days are not working for dynamic array in jquery

静态传递数组时我得到正确的结果(禁用特定星期),但在传递动态数组时不起作用。我正在从 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];
    }
})

工作小提琴