在jQuery Datepicker中禁用天数取决于模型MVC中的其他属性

时间:2016-06-23 05:56:07

标签: javascript jquery asp.net-mvc razor jquery-ui-datepicker

我希望在jQuery UI DatePicker中禁用一周中的特定日期,具体取决于@razor视图中提交的模型中的值是true还是false。

我每个工作日都有一个bool。如果构造了一个值,那么datepickern中的日期可用,但如果为false,则该日期将被禁用。

我在这里的不同侧面环顾四周,但这些选项都不适合我。 这是我的代码:

$('#txtStartDate').datepicker({
    defaultDate: '+1w',
    numberOfMonths: 1,
    showAnim: 'slide',
    changeMonth: true,
    changeYear: true,
    showWeek: true,
    dateFormat: "yy-mm-dd",
    minDate: new Date(hidStartDate),
    beforeShowDay: function(date) {
        var day = date.getDay();

        if (day == 1 && $('#hidMonday').val() == "True") {
            return day;
        }

        if (day == 2 && $('#hidTuesday').val() == "True") {
            return day;
        }

        if (day == 3 && $('#hidWednesday').val() == "True") {
            return day;
        }

        if (day == 4 && $('#hidThursday').val() == "True") {
            return day;
        }

        if (day == 5 && $('#hidFriday').val() == "True") {
            return day;
        }
    },
});

$('#txtStartDate').css('clip', 'auto');

一旦在日历中经历了大约5-6天,我在控制台中出现以下错误

  

" Jquery - ui.js:9742未捕获TypeError:无法读取属性' 0'   未定义"

那就是说,我已经四处查看了这里提出的解决方案,但它可能无效。此解决方案基于以下提议:

Disable specific days of the week on jQuery UI datepicker

提前致谢。

2 个答案:

答案 0 :(得分:1)

我在此fiddle

中检查了您的代码
if (day == 1 && $('#hidMonday').val() == "True") {
            return day;
        }

        if (day == 2 && $('#hidTuesday').val() == "True") {
            return day;
        }
  

如果没有返回任何日期对象,则会出现错误   进入任何if条件)。你不能简单地不回来   如果不满足任何条件,那么更好的回报是假的

答案 1 :(得分:1)

Acutally beforeShowday应该返回一个数组。这就是它的文件所说的

beforeShowDay 

Type: Function( Date date )
Default: null
A function that takes a date as a parameter and must return an array with:
[0]: true/false indicating whether or not this date is selectable
[1]: a CSS class name to add to the date's cell or "" for the default presentation
[2]: an optional popup tooltip for this date

*默认情况下,您可以发送null,否则返回array[flag,"",""] where flag is false for disabling