Jquery UI 日期选择器仅允许动态指定星期几

Jquery UI datepicker to allow dynamic specific days of week only

我想根据用户在其中一个输入框中输入的日期禁用 jQuery UI 日期选择器中的某些日期。

如果我输入 MWF 它应该只允许我 select 属于“M[ 的日期=42=]W"ednesday ot "F"riday

我能够动态构建需要在 return 语句中设置的 return 值字符串。

 for (var j=0; j < arr.length; j++)
      mystr = mystr + "day != " + arr[j] + " && ";

      mystr = mystr.substring(0, mystr.length - 3);

这在 mystr 变量中提供了以下文本:

day != 3 && day != 4 && day != 6 

需要传递给 return 语句,如:

​$("#datepicker").datepicker({
    beforeShowDay: function(date) {
        var day = date.getDay();
        return [(mystr)];
    }
})​​​​​;​

这不起作用....

如果我在 return 语句中明确设置它,我可以禁用我想要的日子。但是我需要根据在文本框中输入的天数动态限制日期选择器中的天数 selection。我可以动态获取日期,还可以准备好动态 return 语句。它不工作。

完整代码:

            var batchdays = ['M', 'T', 'W', 'H', 'F', 'S'];
            var batchcode= "MWF";
            var batchdaysarray = batchcode.replace(/\d+/g, '').split('');
            var arr = [];
            var arrayLength = batchdaysarray.length;

            for (var i = 0; i < arrayLength; i++) {
                    if ($.inArray(batchdaysarray[i], batchdays) != -1) {
                        arr.push($.inArray(batchdaysarray[i], batchdays)+1);
                    }
            }

            var mystr = '';

            for (var j=0; j < arr.length; j++)
                mystr = mystr + "day != " + arr[j] + " && ";

            mystr = mystr.substring(0, mystr.length - 3);

            alert(mystr);
            console.log(mystr);

            $('#actual_start_dt').datepicker({
                dateFormat: 'dd-mm-yy',
                prevText: '<i class="fa fa-chevron-left"></i>',
                nextText: '<i class="fa fa-chevron-right"></i>',
                beforeShowDay: function(date) {
                    var day = date.getDay();
                    return [(mystr)];
                }
            });

请帮忙

我可能认为您已经自己解决了这个问题。您提供的代码存在问题,

return [(mystr)];

根据 jquery-ui 文档 beforeShowDay 是,

A function that takes a date as a parameter and must return an array with:

  1. true/false indicating whether or not this date is selectable

  2. a CSS class name to add to the date's cell or "" for the default presentation

  3. an optional popup tooltip for this date

在您的示例中,您传递的是字符串,

 for (var j=0; j < arr.length; j++)
    mystr = mystr + "day != " + arr[j] + " && ";

 mystr = mystr.substring(0, mystr.length - 3); 

return [(mystr)];

中使用时不转置为语句

您可以使用以下内容,

 beforeShowDay: function(date) {
      var day = date.getDay();
      return [($.inArray(day, arr) != -1)];
  }

请看这个 JSFiddle 演示enter link description here

希望这就是您要找的。