0

Pickadate.jsJQuery Form Pluginを使用しています。日付ピッカーと時間ピッカーを別々に持っています。私がしたいのは、datepicker の値に応じて timepicker の時間を無効にすることです。そのため、JSON データを に取り込もうとしていますpicker.set("disable", [ ]);。プレーンテキストをコンソールログに記録できますが、目的のないままです。

私は多くのことを試しましたが、その質問でこれらの解決策に出くわしました。しかし、私はそれらを起動できませんでした。(私は pickadate の関数とクラスを pickatime のものに適合させました。)

// Javascript
$(document).ready(function() {
  $("input").click(function() {
    $(".datepicker").pickadate({
      format: 'yyyy-mm-dd',
      formatSubmit: 'yyyy-mm-dd',
      min: true,
      max: false
    });
    var $input = $(".timepicker").pickatime({
      format: 'HH:i',
      formatSubmit: 'HH:i',
      formatLabel: 'HH:i'
    });
    $('.datepicker').change(function() {
      $('#form').ajaxSubmit({
        target: '#check_result',
        url: 'check.php',
        success: function showResponse(responseText, $form) {
          var picker = $input.pickatime('picker');
          picker.set("disable", [
            console.log(responseText)
          ]);
        }
      });
      return false;
    });
  });
});
// PHP (check.php)
<?php
// Database connection done.
$date = mysqli_real_escape_string($con, $_POST['date']);
$match_query = mysqli_query($con, "SELECT * FROM booking WHERE DATE(time) = '$date'");
$disabled_times = array();
if ($result = $match_query) {
	while ($row = mysqli_fetch_assoc($result)) {
		$disabled_times[] = $row['time'];
	}
	mysqli_free_result($result);
}
echo implode($disabled_times);
?>

4

1 に答える 1

1

PHPから返されるjsonの例を投稿できますか?

ドキュメント ( http://amsul.ca/pickadate.js/api/#method-get-disable )によると、json は [2,30]、[4,30]、[9,0] のようになります。 ]

json が正しい場合は、timepicker に文字列として渡されていないことを確認してください。次のようなものを試してください:

var json = JSON.parse(responseText);
picker.set("disable", [ json ]);

更新:次のコードを使用すると、json が適切に返されると思います。

...
$time = explode(',', $row['time']);
$time[0] = (int)$time[0];
$time[1] = (int)$time[1];
$disabled_times[] = $time;
...
echo json_encode($disabled_times);
于 2016-07-06T00:22:16.547 に答える