使用Select2组件预选择时间

Pre-select time with a Select2 component

本文关键字:选择 时间 组件 Select2 使用      更新时间:2023-09-26

我是JavaScript的新手(来自Flex)。我正在使用Select2组件以15分钟的增量显示一天的时间:

<select id="e2" style="width:125px">
    <option value="00:00:00">12:00 AM</option>
    <option value="00:15:00">12:15 AM</option>
    <option value="00:30:00">12:30 AM</option>
    <option value="00:45:00">12:45 AM</option>
    <option value="01:00:00">1:00 AM</option>
    <option value="01:15:00">1:15 AM</option>
    <option value="01:30:00">1:30 AM</option>
    <option value="01:45:00">1:45 AM</option>
</select>

我想要的是预先选择与当前(未来)时间最接近的时间;例如,如果现在是12:02,我希望选择12:15(而不是12:00)。

我的问题是如何以及在哪里使用Select2。

当我初始化组件时是否使用"init selection"方法:

$( '#e2' ).select2();

还是做其他事情更好?

这是我使用(在Flex中)设置日期的当前方法。我只是有点不确定在哪里使用Select2组件来做到这一点。

任何提示都非常感谢。谢谢你!

对于你需要实现的,我想说最好的方法是创建你自己的函数来找到最近的时隙,然后格式化字符串以匹配你的Select选项值。

下面是示例代码(您需要根据需要格式化它),但它适用于我的当前时间:

示例:http://jsfiddle.net/ZC5tG/

    <select id="e2" style="width:125px">
        <option value="12:00:00">12:00 AM</option>
        <option value="12:15:00">12:15 AM</option>
        <option value="12:30:00">12:30 AM</option>
        <option value="12:45:00">12:45 AM</option>
        <option value="01:00:00">1:00 AM</option>
        <option value="01:15:00">1:15 AM</option>
        <option value="01:30:00">1:30 AM</option>
        <option value="01:45:00">1:45 AM</option>
    </select>
jQuery

<script>
    function getNearestTimeSlotString() {
        var now = new Date();
        var hour = now.getHours();
        var minutes = now.getMinutes();
        var ampm = "AM";
        if (minutes < 15) {
            minutes = "00";
        } else if (minutes < 30){
            minutes = "15";
        }else if (minutes < 45){
            minutes = "30";
        } else {
            minutes = "00";
            ++hour;
        }
        if (hour > 23) {
            hour = 12;
        } else if (hour > 12) {
            hour = hour - 12;
            ampm = "PM";
        } else if (hour == 12) {
            ampm = "PM";
        } else if (hour == 0) {
            hour = 12;
        }
        return(hour + ":" + minutes + ":00");
    }
$(document).ready(function(e) {
    alert(getNearestTimeSlotString());
    $("#e2").val(getNearestTimeSlotString);
});