【问题标题】:Jquery UI datepicker to allow dynamic specific days of week onlyJquery UI datepicker 只允许动态的特定星期几
【发布时间】:2018-04-01 09:27:28
【问题描述】:

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

如果我输入 MWF,它应该只允许我选择落在 "M"onday 或 "W" 的日期ednesday ot "F"riday

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

 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 语句中明确设置它,我可以禁用我想要的天数。但我需要根据在文本框中输入的天数动态限制日期选择器中的天数选择。我可以动态获取日期,还可以准备好动态退货声明。它不工作。

完整代码:

            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)];
                }
            });

请帮忙

【问题讨论】:

标签: jquery jquery-ui datepicker jquery-ui-datepicker


【解决方案1】:

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

return [(mystr)];

根据jquery-ui文档beforeShowDay是,

以日期为参数且必须返回数组的函数 与:

  1. true/false 表示此日期是否可选

  2. 添加到日期单元格的 CSS 类名或“”作为默认值 演示文稿

  3. 此日期的可选弹出工具提示

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

 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 Demoenter link description here

我希望这就是你要找的。​​p>

【讨论】:

  • 是的......我明白了......但这只允许我选择星期三和星期五,即使我试图允许“MWF”,即星期一也应该被允许......我试过了在这种情况下,像 MWFS 这样的 4 天启用了周三周五和周六,但“周一”被禁用了....无法弄清楚为什么:-(
  • 尤里卡 ..... :-) beforeShowDay: function(date) { var day = date.getDay();返回 [($.inArray(day, arr) !== -1)];这是救命稻草:stackoverflow.com/questions/18867599/…
  • 很高兴它为你解决了......我已经用你提到的建议更新了答案。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-11
  • 2011-06-27
  • 1970-01-01
  • 2020-12-20
  • 2011-05-27
  • 2020-12-25
相关资源
最近更新 更多