我正在尝试为用户创建一些特定日期,因为我已经在范围内指定了一些日期。一切看起来都不错,除了日期选择器没有选择超过9月的日期。
我找不到错误,如果有人可以提供帮助,那将是一个很大的帮助。
此处有JsFiddle网址: - http://jsfiddle.net/8AXaw/1/
<script type='text/javascript'>
var availableDates = "2014-07-04, 2014-07-05, 2014-07-06, 2014-07-07, 2014-07-08, 2014-07-09, 2014-07-10, 2014-07-11, 2014-07-12, 2014-07-13, 2014-07-14, 2014-07-15, 2014-07-16, 2014-07-17, 2014-07-18, 2014-07-19, 2014-07-20, 2014-07-21, 2014-07-22, 2014-07-23, 2014-07-24, 2014-07-25, 2014-07-26, 2014-07-27, 2014-07-28, 2014-07-29, 2014-07-30, 2014-07-31, 2014-08-01, 2014-08-02, 2014-08-03, 2014-08-04, 2014-08-05";
var availableDate = availableDates.split(', ');
function available(date) {
dmy = date.getFullYear() + '-0' + (date.getMonth()+1) + '-0' +date.getDate();
if (jQuery.inArray(dmy, availableDate) != -1) {
return [true, '','Available'];
} else {
return [false,'','unAvailable'];
}
}
jQuery('#datepicker').datepicker({ beforeShowDay: available });
</script>
此处有JsFiddle网址: - http://jsfiddle.net/8AXaw/1/
答案 0 :(得分:4)
这就是你构建日期的方式
var dmy = date.getFullYear() + '-0' + (date.getMonth()+1) + '-0' +date.getDate();
注意零,你最后会得到像
这样的日期2014-07-08
2014-07-09
2014-07-010
2014-07-011
2014-07-012
很明显,为什么它最多只能09
,因为010
无效,并且您在这几个月内也一样。
您可以添加一个在需要时填充数字的功能
function available(date) {
var dmy = date.getFullYear() + '-' + pad(date.getMonth() + 1) + '-' + pad(date.getDate());
if (jQuery.inArray(dmy, availableDate) != -1) {
return [true, '', 'Available'];
} else {
return [false, '', 'unAvailable'];
}
}
function pad(n) {
return n < 10 ? ('0' + n) : n;
}