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) { ...

日付付き:

2013 年 2 月 21 日、2013 年 2 月 24 日、2013 年 2 月 27 日、
障害者になる?私の値は実行時にサーバー上で解析されますよね?

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 に答える