Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/403.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 下拉式php中的加载时间_Javascript_Jquery_Datetime - Fatal编程技术网

Javascript 下拉式php中的加载时间

Javascript 下拉式php中的加载时间,javascript,jquery,datetime,Javascript,Jquery,Datetime,我想在第一个下拉列表中加载日期。在第二个下拉列表中,我正在加载时隙。如果选择了今天的日期[06-04-2015],则时间段应在两小时后加载。如果选择了第二天的[07-04-2015]或[08-04-2015],则时间段应从上午9:00开始 到目前为止,我的工作是 <select class="form-control" name="ddate" > <option value="<?php echo date('d-m-Y') ;?>"><?php e

我想在第一个下拉列表中加载日期。在第二个下拉列表中,我正在加载时隙。如果选择了今天的日期[06-04-2015],则时间段应在两小时后加载。如果选择了第二天的[07-04-2015]或[08-04-2015],则时间段应从上午9:00开始

到目前为止,我的工作是

<select class="form-control"  name="ddate" >
<option value="<?php echo date('d-m-Y') ;?>"><?php echo date("d-m-Y", time()) ;?></option>
<option value="<?php date("d-m-Y", time()+86400) ;?>"><?php echo date("d-m-Y", time()+86400) ;?></option>
<option value="<?php echo date("d-m-Y", time()+172800) ;?>"><?php echo date("d-m-Y", time()+172800) ;?><option>
</select>
<?php
$timeAtHalfHour = time() - ( time() % (60*60));
$timeAtHalfHour += 120*90;  //IDK IF YOU WANT THIS?
$endTime = strtotime('11:00 pm');
$numIntervals = ($endTime - $timeAtHalfHour) / (60*60);
echo "<select name='timeInterval'>";
$strTime1 = date('h:iA', $timeAtHalfHour);
foreach(range(1,$numIntervals) as $cur)
{
   $thisTime = $timeAtHalfHour + 60*60*$cur;
   $strTime2 = date('h:iA', $thisTime);
   echo "<option value=$cur>$strTime1 - $strTime2 </option><br />";
   $strTime1 = $strTime2;
}
echo "</select>";
?>


您应该在Javascript中执行此操作。关于你提到的问题:

如果选择了今天的日期[06-04-2015]

PHP是在服务器端执行的,它无法处理在列表中选择元素的事件

Javascript可以做到这一点,因为它运行在浏览器端,您可以处理此事件。您可以使用JQuery来完成所需的任务,下面是一段代码片段,可以帮助您开始:

$("form-control[name=ddate]").change(function(){
    $(this).children(":selected"); // This get you all the selected items
});
编辑:使用JQuery和PHP的最终代码:

<html>
<head>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
</head>
<body>

    <select class="form-control"  name="ddate" >
    <option value="<?php echo date('d-m-Y') ;?>"><?php echo date("d-m-Y", time()) ;?></option>
    <option value="<?php echo date("d-m-Y", time()+86400) ;?>"><?php echo date("d-m-Y", time()+86400) ;?></option>
    <option value="<?php echo date("d-m-Y", time()+172800) ;?>"><?php echo date("d-m-Y", time()+172800) ;?><option>
    </select>
    <?php

    echo "<select name='timeInterval' id='timeInterval'>";
    $start    = new DateTime('9AM');
    $end      = new DateTime('11PM');
    $interval = new DateInterval('PT1H'); // Set the interval to One hour
    $period   = new DatePeriod($start, $interval, $end);

    foreach ($period as $dt)
    {
        $dt2 = clone $dt;
        $dt2->add(new DateInterval('PT1H')); // Add One hour
        echo '<option value="'.$dt->format("G").'">'.$dt->format("h:iA").' - '.$dt2->format("h:iA").' </option><br />';
    }

    echo "</select>";
    ?>


    <script>
        $( document ).ready(function() {
            var d = new Date();
            var hour = d.getHours()+2;
            $('#timeInterval option[value="'+hour+'"]').prop('selected', true);
        });
        $(".form-control[name=ddate]").change(function(){
           selDate = $(this).children(":selected").val();
           var d = new Date();
           var month = d.getMonth()+1;
           var day = d.getDate();
           var hour = d.getHours()+2;

           var curDate = (day<10 ? '0' : '') + day + '-' +
            (month<10 ? '0' : '') + month + '-' +
            d.getFullYear();

           // If selected date is equal to the current Date
            if(selDate != curDate)
                $('#timeInterval option:eq(0)').prop('selected', true); // Select 9:00 AM
            else
                $('#timeInterval option[value="'+hour+'"]').prop('selected', true); // Select the next 2 Hours
        });
    </script>
</body>
</html>


好啊如何设置开始时间?如果选择了第二天,则必须从上午9点开始。我将问题的标签更改为正确的主题。同时,我会尽力给你完整的代码。是的,我知道了。。谢谢你的密码。。。一点零钱。如果我们选择今天的日期,那么时间段应该从现在起2小时开始…刚刚编辑了我的代码,它现在可以工作了。不要忘记将答案设置为正确;)是 啊谢谢你的代码。。。。它是有效的。。。我们不能隐藏今天日期的前一个时间段吗???