将动态参数插入jQuery datepicker

时间:2013-02-09 10:28:10

标签: php datepicker

我正在尝试将动态值插入

datepicker()
方法。

可以插入一个变量,如下所示:

<html>
<head>
<?php $date='2-15-2013'; ?>

<script>
var date = '<?php echo $date; ?>';
/* create an array of days which need to be disabled */
var disabledDays = [
        date,
        "2-21-2013",
        ];

/* utility functions */
function bookedDays(date) {
var m = date.getMonth(), d = date.getDate(), y = date.getFullYear();

for (i = 0; i < disabledDays.length; i++) {
  if($.inArray((m+1) + '-' + d + '-' + y, disabledDays) != -1 ) {
      return [false];
  }
}
return [true];
}

/* create datepicker */
jQuery(document).ready(function() {
jQuery('#datepicker').datepicker({
  minDate: 0,
  maxDate: "+3M +10D",
  dateFormat: 'dd MM, yy',
  constrainInput: true,
  beforeShowDay: bookedDays
 });
});
</script>

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

日期'2-15-2013'已正式停用。为什么我不能插入一串值说:

$dates = ['2-21-2013', '2-24-2013', '2-27-2013'];
$unavailable = array();
foreach($dates as $date){
    array_push( $unavailable, $date);
}
$unavaildays = implode(',', $unavailable);
$string = "{$unavaildays},";
?>

<script>
var dates = '<?php echo $string; ?>';
/* create an array of days which need to be disabled */
var disabledDays = [
        dates
        "2-21-2013",

    ];
/* utility functions */
function bookedDays(date) { ...

日期:

2-21-2013,2-24-2013,2-27-2013,
被禁用?我的值在运行时在服务器上解析不是吗?

2 个答案:

答案 0 :(得分:1)

你错过了日期的引号:

$dates = ['"2-21-2013"', '"2-24-2013"', '"2-27-2013"'];

答案 1 :(得分:0)

正如@ahoo回答引号有问题,但不是全部。似乎disabledDays也以错误的方式与dates分配。

我会推荐类似的东西:

<?
$dates = ['2-21-2013', '2-24-2013', '2-27-2013'];
$unavailable = array();
foreach($dates as $date){
    array_push( $unavailable, "'$date'");
}
$unavaildays = '[' . implode(',', $unavailable) . ']';
?>
<script>
var disabledDays = <?= $unavaildays?>;
disabledDays.push('2-21-2013');

这样你就可以使用php制作正确的初始数组了,而且你可以在javascript中添加更多的日期。

现在,出了什么问题:

以这种方式添加dates

var dates = '<?php echo $string; ?>';
/* create an array of days which need to be disabled */
var disabledDays = [
        dates
        "2-21-2013",

    ];

结果数组是

[
    '2-21-2013,2-24-2013,2-27-2013',
    '2-21-2013'
]

注意第一个数组值,它不是3个日期,而是从3个日期粘贴的字符串。