【问题标题】:Disable dates and time in a jquery time from mysql从mysql禁用jquery时间中的日期和时间
【发布时间】:2016-01-23 15:15:51
【问题描述】:

更新这是对我的问题的完整更新

<!doctype html>
<html>

<meta charset="utf-8">

<meta name="author" content="Amsul - http://amsul.ca">
<meta name="viewport" content="width=device-width,user-scalable=no">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="X-UA-Compatible" content="IE=Edge">

<title>Pickadate.js</title>

<link rel="stylesheet" href="../../lib/themes/default.css">
<link rel="stylesheet" href="../../lib/themes/default.date.css">
<link rel="stylesheet" href="../../lib/themes/default.time.css">

<!--[if lt IE 9]>
    <script>document.createElement('section')</script>
    <style type="text/css">
        .holder {
            position: relative;
            z-index: 10000;
        }
        .datepicker {
            display: block;
        }
    </style>
<![endif]-->


<body>
<?php
require 'connect-db.php';

   try{
    $stmt = $db->query("SELECT ddate FROM testdates");
$result = $stmt->fetchAll(\PDO::FETCH_ASSOC);
}catch(\PDOException $e){
    echo $e->getMessage();
}

$json_array = json_encode($result)

   ?>




    <section class="section">

        <form>
            <fieldset>
                <h3><label for="datepicker_id">Pick a date.</label></h3>

                <input
                    id="datepicker_id"
                    class="datepicker"
                    name="date"
                    type="text"
                    value=""
                    data-value="">

                <br><br><br><br><br>


                <h3><label for="timepicker_id">Pick a time</label></h3>
                <input
                    id="timepicker_id"
                    class="timepicker"
                    value=""
                    type="time"
                    name="time">
                    <!-- valuee="2:30 AM"
                    data-value="0:00" -->

                <!-- <button type="button">Disable all dates</button>
                <input class="button" type="submit" value="open"> -->
            </fieldset>
        </form>


        <div id="container"></div>



    </section>


    <script src="../jquery.1.9.1.js"></script>
    <script src="../../lib/picker.js"></script>
    <script src="../../lib/picker.date.js"></script>
    <script src="../../lib/picker.time.js"></script>
    <script src="../../lib/legacy.js"></script>



    <script type="text/javascript">
    //datepicker
     var disdates = <?php echo $json_array; ?>


        var $input = $( '.datepicker' ).pickadate({
            formatSubmit: 'yyyy/mm/dd',
             min: true,
            container: '#container',
            // editable: true,
            closeOnSelect: true,
            closeOnClear: false,
              disable: [ disdates

  ]

        })





        var picker = $input.pickadate('picker')




        // picker.set('select', '14 October, 2014')
        // picker.open()

        // $('button').on('click', function() {
        //     picker.set('disable', true);
        // });

    </script>



<script type="text/javascript">
//timepicker

        var dtimes = new Date(2015,11,28,5,30);
        var $timeinput = $( '.timepicker' ).pickatime({
            disable: [
    [2,0],
    dtimes


    ]


        })
        var timepicker = $timeinput.pickatime('picker')

    </script>



</body>
</html> // i must thank users in php chatroom for helping me fix the errors.

上面是一个页面,您可以在其中看到日历,并且某些日期被禁用,这些日期是从数据库中获取的。我正在使用this picker

  disable: [
    [2015,29,9], // disables today strangely month -1 and only accepts yyy,mm,dd
    [some other array]

  ]
})

在我的数据库中,'ddate' 是 varchar,没有主键,没有唯一 id,什么都没有,包含

2015,9,30   
2015,9,31   
2015,10,30  
  1. 值没有被传递,或者从 mysql 到 javascript 什么的,我想我想要多维数组。

  2. 我希望 javascript 数组具有月份 -1,因为正如我上面解释的那样,在禁用这一天的禁用选项中,您必须输入上个月的数字。如果是第一个月,则表示 12。

请注意,我想对 timepicker 使用相同的方法,但如果我了解日历的问题,我想我可以自己做

【问题讨论】:

  • 有什么问题和疑问?
  • 这不是一个 jquery 问题恕我直言。您只需从数据库中选择值,迭代并创建一个包含日期和时间的数组,然后创建日期选择器并禁用:从该数组中。问题是您使用的是什么系统? PHP, C# ???你如何让你的页面到浏览器?在为客户端准备 HTML 时,您可以使用 AJAX 或将这些值加载到服务器上。信息太少了。
  • @TomFreudenberg 请重新阅读问题
  • @charlietfl 请重新阅读问题
  • 从演示站点我看到月份实际上是 +1,而不是 -1。你能自己看看这个并确认你得到了 -1

标签: php jquery mysql ajax datepicker


【解决方案1】:

我假设您的数据库内容是:

ddate: varchar()

存储在表 testdates 中的值(作为字符串):

2015-10-29
2015-10-15
2015-10-10

选择仍然是原样,并为 js 的数组构建创建一个字符串

try{
  $stmt = $db->query("SELECT ddate FROM testdates");
  $db_ddates = $stmt->fetchAll(\PDO::FETCH_ASSOC);

  $js_ddates = "";
  foreach ($db_ddates as $row => $record) {
    $js_ddates .= '"' . $record['ddate'] . '",';
  }

}
catch(\PDOException $e) {
  echo $e->getMessage();
}

现在在构建脚本部分中使用它

// take dates as array of strings from db
var ddates_str_arr = [ <?php echo $js_ddates; ?> ];
// build dates array for picker
var disdates = [];
for (var i = 0; i < ddates_str_arr.length; i++) {
  disdates.push(new Date(ddates_str_arr[i]));
}
// just use it in picker
var $input = $( '.datepicker' ).pickadate({
  formatSubmit: 'yyyy/mm/dd',
  min: true,
  container: '#container',
  // editable: true,
  closeOnSelect: true,
  closeOnClear: false,
  disable: disdates
});

注意:我没有测试它,只是从脑海中写下这些行。可能会有一些打字勘误表,但应该可以正常工作。


更新:

不确定选择器,但也可以尝试一下,而不是上面的脚本部分

// just use it in picker
var $input = $( '.datepicker' ).pickadate({
  formatSubmit: 'yyyy/mm/dd',
  min: true,
  container: '#container',
  // editable: true,
  closeOnSelect: true,
  closeOnClear: false,
  disable: [ <?php echo $js_ddates; ?> ]
});

【讨论】:

  • 第一个脚本有效,而不是更新,非常感谢,我会尽快给你赏金,所以告诉我应该等待 2 小时
  • 如果你能回答这个问题,我将不胜感激stackoverflow.com/questions/33983950/…
猜你喜欢
  • 2017-10-12
  • 1970-01-01
  • 2013-06-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-29
  • 2016-06-14
  • 1970-01-01
相关资源
最近更新 更多