2016-07-05 57 views
0

我使用Pickadate.jsJQuery Form Plugin。我有日期和時間選擇器分開。我想要做的是根據datepicker的值禁用timepicker中的時間。所以,我試圖讓JSON數據進入picker.set("disable", [ ]);。我可以console.log純文本,但它仍然沒有目標。通過Ajax更新Pickadate輸入

我嘗試了很多,並遇到過these solutions。但我無法啓動它們。 (我適應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 
 
require ('connect.php'); 
 
$date = mysql_real_escape_string($_POST['date']); 
 
$match_query = mysql_query("SELECT * FROM booking where DATE(time)='$date'"); 
 
$disabled_times = array(); 
 
if ($result = $match_query) { 
 
\t /* fetch associative array */ 
 
\t while ($row = mysql_fetch_assoc($result)) { 
 
\t \t setlocale(LC_ALL,"tr_TR.UTF-8"); 
 
\t \t $row['time'] = date('H:i', strtotime($row['time'])); 
 
\t \t $row['time'] = str_replace(':', ',', $row['time']); 
 
\t \t $disabled_times[] = '['.$row['time'].']'; 
 
\t } 
 
\t /* free result set */ 
 
\t mysql_free_result($result); 
 
} 
 
echo implode($disabled_times); 
 
?>

回答

1

你能後的JSON的例子從PHP返回?

按照文檔(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); 
+0

謝謝。 在我的方法中,console.log(responseText)完全返回'[「[4,30]」,「[9,0]」]'。在你的console.log(json)中返回'[「4,30」,「9,0」]'。 我知道我的代碼生成一個字符串值,它不會爲我工作。我正在尋找正確的方式來傳遞json。 – Melih

+0

我明白了...讓我們嘗試新的解決方案,檢查我的更新。 –

+0

太棒了!只需要幾個更正... 'var json = JSON.parse(responseText); picker.set(「enable」,true); picker.set(「disable」,json);' – Melih