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

动态追加行后flatpickr时间选择器失效问题求助

问题:动态添加的flatpickr时间输入无法正常工作

我有一个包含时间输入字段的表格,该时间输入使用flatpickr组件。表格中前两个静态时间输入字段可正常工作,但当我动态追加带有时间输入字段的行后,flatpickr无法正常运行。

问题原因

当前代码仅在页面初始加载时,对已经存在的.from和.to元素初始化了flatpickr实例。而动态添加的DOM元素是在页面加载完成后才创建的,没有被执行初始化逻辑,所以flatpickr无法生效。

解决方案

将flatpickr的初始化逻辑封装成可复用的函数,在页面加载时初始化静态元素,同时在动态添加新行之后,针对新添加的元素再次执行初始化(使用:last选择器只处理最新添加的元素,避免重复初始化已存在的实例)。

修改后的完整代码

HTML代码

<html>
<head>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css">
<link href="https://cdnjs.cloudflare.com/ajax/libs/flatpickr/4.6.11/flatpickr.min.css" rel="stylesheet" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/flatpickr/4.6.11/flatpickr.min.js"></script>
</head>
<body>
<div class="container">
  <div class="row justify-content-center">
    <table>
    <tbody>
      <tr>
        <td><input type="time" class="form-control flatpickr from" name="from[]"></td>
        <td><input type="time" class="form-control flatpickr to" name="to[]"></td>
      </tr>
      <tr>
        <td><input type="time" class="form-control flatpickr from" name="from[]"></td>
        <td><input type="time" class="form-control flatpickr to" name="to[]"></td>
      </tr>
    </tbody>
    </table>
    <input type='button' class='btn btn-warning' value='&#43; Add more rows' id='addmore'>
  </div>
</div>
</body>
</html>

JavaScript代码

// 封装初始化函数,仅处理最新添加的时间输入框
function initNewFlatpickr() {
    $('.from:last').flatpickr({
        enableTime: true,
        noCalendar: true,
        time_24hr: true,
        minuteIncrement: 30
    });
    $('.to:last').flatpickr({
        enableTime: true,
        noCalendar: true,
        time_24hr: true,
        minuteIncrement: 30
    });
}

$(document).ready(function() {
    // 初始化页面上已有的静态时间输入框
    $('.from').flatpickr({
        enableTime: true,
        noCalendar: true,
        time_24hr: true,
        minuteIncrement: 30
    });
    $('.to').flatpickr({
        enableTime: true,
        noCalendar: true,
        time_24hr: true,
        minuteIncrement: 30
    });

    // 点击添加行按钮的逻辑
    $(document).on("click","#addmore",function() {
        var html = "<tr>" +
        "<td><input type='time' class='form-control flatpickr from' name='from[]' ></td>" +
        "<td><input type='time' class='form-control flatpickr to' name='to[]' ></td>" +
        "</tr>";
        $('tbody').append(html);
        // 给新添加的输入框初始化flatpickr
        initNewFlatpickr();
    });
});

内容的提问来源于stack exchange,提问作者Les Yun

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 17:05:19