You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将可选时段按钮的时间插入datetime-local表单字段

解决点击时段按钮填充datetime-local字段的问题

要实现点击时段按钮将时间填入datetime-local字段,核心是满足该字段的格式要求(YYYY-MM-DDTHH:MM),并通过JavaScript绑定点击事件完成赋值,具体修改如下:

1. 修改PHP生成按钮的代码

给每个时段按钮添加data-datetime属性,存储符合datetime-local格式的完整时间值,同时保留显示的时段文本:

<?php
$sched_set_qry = $conn->query("SELECT * FROM `schedule_settings`");
$sched_set = array_column($sched_set_qry->fetch_all(MYSQLI_ASSOC),'meta_value','meta_field');
$today = date("Y-m-d");
$morningSlots = explode(',',$sched_set['morning_schedule']);
$a = $today . " " . $morningSlots[0];
$b = $today . " " . $morningSlots[1];

$period = new DatePeriod(
    new DateTime($a),
    new DateInterval('PT1H'),
    new DateTime($b)
);
foreach ($period as $date){
    // 生成符合datetime-local格式的字符串:YYYY-MM-DDTHH:MM
    $fullDatetime = $date->format("Y-m-d\TH:i");
    $displayTime = $date->format("H:i");
?>
<input type="button" class="form-control time-btn" name="time" value="<?php echo $displayTime; ?>" data-datetime="<?php echo $fullDatetime; ?>">
<?php } ?>

2. 添加JavaScript点击事件

在页面底部(或脚本标签中)添加代码,监听按钮点击并赋值给datetime-local输入框:

// 获取所有时段按钮和日期输入框
const timeButtons = document.querySelectorAll('.time-btn');
const dateSchedInput = document.querySelector('input[name="date_sched"]');

// 给每个按钮绑定点击事件
timeButtons.forEach(btn => {
    btn.addEventListener('click', function() {
        // 从data-datetime属性获取格式正确的时间值,填入输入框
        dateSchedInput.value = this.getAttribute('data-datetime');
    });
});

关键说明

  • datetime-local字段必须严格使用YYYY-MM-DDTHH:MM格式(注意日期和时间之间的T分隔符),直接传入H:i格式的时间无法识别。
  • 通过data-*属性存储完整的格式化时间,避免在点击时再拼接日期,减少出错概率。
  • 给按钮统一添加time-btn类,方便JavaScript批量选择元素,避免影响其他按钮。

内容的提问来源于stack exchange,提问作者Hay Blog

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 14:45:46