使用偶数天数阻止几个月甚至几天(JQuery UI)

时间:2014-11-21 16:50:08

标签: javascript jquery jquery-ui datepicker

我必须使用这样工作的Datepicker:如果所选月份有偶数天数(30),则该月份的所有偶数天数将被阻止(2,4,6 ......)等。如果所选月份的天数为奇数(31),则日期选择器中的所有奇数天将被阻止选择(1,3,5 ..)等。

我的问题是,我不知道如何阻止偶数和奇数日子,我只知道如何阻止整个月,但不是特别是任何一天...... 免责声明:我知道已经发布了一些内容,比如如何阻止特定的日子,但不是偶数或奇数天的事情。

这是我的代码:

  <link rel="stylesheet" href="jquery-ui.min.css">
  <script src="external/jquery/jquery.js"></script>
  <script src="jquery-ui.min.js"></script>
  <script>
  $(function() {
   $( "#datepicker" ).datepicker({beforeShowDay: nationalDays});
  });

 function nationalDays(date){
 var x = date.getMonth();
 var r = x%2;
 if(r == 0){
    return [false];
 }
else if(r == 1){
    return [true];
 }
}
</script>
</head>
<body>

<p>Date: <input type="text" id="datepicker"></p>


</body>

1 个答案:

答案 0 :(得分:1)

beforeShowDay选项中,您可以检查是否应该启用日期,并将要返回的数组中的第一项设置为true / false。 True将启用该项,而false将禁用它,如下所示:

&#13;
&#13;
$(function() {
  $("#datepicker").datepicker({
    defaultDate: new Date(),
    beforeShowDay: function(date) {
      var disabled = true, // date enabled by default
        // get the number of days in current month
        numOfDays = new Date(date.getFullYear(), date.getMonth() + 1, 0).getDate();
      if (numOfDays % 2 == 0)
        disabled = (date.getDate() % 2 != 0) // for even-days months, disable the even dates
      else disabled = (date.getDate() % 2 == 0) //for odd - days months, disable the odd dates
      return [disabled, ""]
    }
  });
});
&#13;
<link href="http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css" rel="stylesheet" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="http://code.jquery.com/ui/1.9.2/jquery-ui.js"></script>
<p>Date:
  <input type="text" id="datepicker" />
</p>
&#13;
&#13;
&#13;