【问题标题】:Load time in dropdown php在下拉 php 中加载时间
【发布时间】:2015-06-10 15:10:05
【问题描述】:

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

到目前为止我的工作是

<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 jquery datetime


    【解决方案1】:

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

    如果今天的日期[06-04-2015]被选中

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

    Javascript 可以做到这一点,因为它在浏览器端运行,您可以处理此事件。你可以使用JQuery来du你想要的,这里有一个可以帮助你开始的代码sn-p:

    $("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>
    

    【讨论】:

    • ok.... 如何设置开始时间?如果选择第二天,则必须从早上 9 点开始
    • 我将您问题的标签更改为正确的主题。同时,我会尽力为您提供完整的代码。
    • 是的,明白了.. 感谢您的代码... 一个小改动。如果我们选择今天的日期,那么时间段应该从现在起 2 小时开始......
    • 刚刚编辑了我的代码,它现在可以工作了。不要忘记将答案设置为正确;)
    • 是的...感谢您的代码....它有效...我们不能隐藏今天日期的上一个时间段吗???
    猜你喜欢
    • 2021-12-28
    • 2020-03-29
    • 2020-03-10
    • 1970-01-01
    • 1970-01-01
    • 2011-03-19
    • 2011-11-12
    相关资源
    最近更新 更多