1

我正在尝试将动态值插入

日期选择器()
方法。

可以像这样插入一个变量:

<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,
成为残疾人?我的值是在运行时在服务器上解析的,不是吗?

4

2 回答 2

1

您错过了日期周围的引号:

$dates = ['"2-21-2013"', '"2-24-2013"', '"2-27-2013"'];
于 2013-02-09T10:33:25.060 回答
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 个日期粘合而成的字符串。

于 2013-02-09T11:04:09.567 回答