0

我使用 jquery Datepicker 并且对于当天的照片(复选框)我正在使用 datepicker,这样当用户单击某张照片的某个日期时,该日期将在当天的另一张照片中被禁用(复选框)。一切正常,但日期仅在 10 点之后才被禁用,而不是在它之前。为什么?下面是我的代码:]

HTML

<div class="photos">
<div class="photooftheday">
  <input class="photo_of_the_day" type="checkbox" value="5/14" name="photoday[]">
  Photo of the Day
</div>
<input class="datepicker photoDate2" type="text" style="display:none;" name="date[]" value="">
</div>

jQuery

<script type="text/javascript">
$('input.photo_of_the_day').live('click', function(){
  var array = [];
  var used_dates = $('input#date_photos').val(); // dates from database
  var useddates = used_dates.split(','); 
  for(var i=0; i < useddates.length; i++) {
      array.push(useddates[i]);
   }
// array  = 2013-10-30,2013-10-22,2013-10-21,2013-10-29,2013-10-28,2013-10-20,2013-10-29 when alerted
   var parents = $(this).parents('div.photos');
   $('input.datepicker:visible').each(function(){
       var val = $(this).val();
        array.push(val);
   })
    var unavailableDates = array;
   if($(this).is(':checked')){
                parents.find('input.datepicker').css('display', 'block');
                parents.find('input.datepicker').val('');
                parents.find('input.datepicker').datepicker({
                    "dateFormat":"yy-mm-dd",
                    "minDate":0,
                    "beforeShowDay": function(date){
                        dmy = date.getFullYear()+ "-" +(date.getMonth() + 1)+ "-" +date.getDate();
                        if ($.inArray(dmy, unavailableDates) == -1) {
                            return [true, ""];
                        } else {
                            return [false, "", "Unavailable"];
                        }
                    }
                });
            }else{
                parents.find('input.datepicker').css('display', 'none');
            }
        })
</script>

欢迎任何帮助或建议。谢谢

4

1 回答 1

0

找到了解决方案。问题是日期小于 10 的值在单击时返回为 01,02 等等,而检查不可用的日期值是 1,2 等等。所以我更新了上面的jquery代码如下:

$('input.photo_of_the_day').live('click', function(){
            var array = [];
            var used_dates = $('input#date_photos').val(); // db dates
            var useddates = used_dates.split(','); 
            for(var i=0; i < useddates.length; i++) {
                array.push(useddates[i]);
            }
            var parents = $(this).parents('div.photos');
            $('input.datepicker:visible').each(function(){
                var val = $(this).val();
                array.push(val);
            })
            var unavailableDates = array;
            if($(this).is(':checked')){
                parents.find('input.datepicker').css('display', 'block');
                parents.find('input.datepicker').val('');
                parents.find('input.datepicker').datepicker({
                    "dateFormat":"yy-mm-dd",
                    "minDate":0,
                    "beforeShowDay": function(date){
                        var Date = (date.getDate() < 10) ? '0'+date.getDate() : date.getDate();  // added this
                        dmy = date.getFullYear()+ "-" +(date.getMonth() + 1)+ "-" + Date;
                        if ($.inArray(dmy, unavailableDates) == -1) {
                            return [true, ""];
                        } else {
                            return [false, "", "Unavailable"];
                        }
                    }
                });
            }else{
                parents.find('input.datepicker').css('display', 'none');
            }
        })
于 2013-11-01T07:51:39.300 回答