一张桌子上有许多日期选择器

Posted

技术标签:

【中文标题】一张桌子上有许多日期选择器【英文标题】:Many datepickers in one table 【发布时间】:2020-06-30 17:21:04 【问题描述】:

我正在使用 Bootstrap 4 datetimepicker 库https://tempusdominus.github.io/bootstrap-4/Usage/ 我的页面上有一张表格,每一行都有一个日期选择器。现在,这些日期选择器正在正确呈现,但只有第一个日期选择器在单击时做出反应(显示日历),而其他日期选择器没有反应。 就像我的函数只指向单个 datepicker 的 id,它应该存储类似 Array Id 的东西。我不知道如何改变它。

HTML

                <tbody>
                @foreach (var item in Model.ViewModel.TrainingsList)
                
                    <tr>
                        <td>@item.Name</td>
                        <td>
                            <div class="form-group">
                                <div class="input-group date" id="datetimepicker1" data-target-input="nearest">
                                    <input type="text" class="form-control datetimepicker-input" data-target="#datetimepicker1" asp-for="@item.Id" value="@item.TrainingDate"/>
                                    <div class="input-group-append" data-target="#datetimepicker1" data-toggle="datetimepicker">
                                        <div class="input-group-text">
                                            <i class="far fa-calendar"></i>
                                            <i class="far fa-clock"></i>
                                        </div>
                                    </div>
                                </div>
                            </div>
                        </td>
                    </tr>
                
            </tbody>

JQuery

    <script type="text/javascript">
    $(document).ready(function () 
        $('#datetimepicker1').datetimepicker(
            sideBySide: true,
        );
    );
</script>

【问题讨论】:

id 属性在 DOM 中必须是唯一的。复制它们是无效的。将选择器更改为一个类,它将起作用。例如。 $('.date').datetimepicker(); 【参考方案1】:

为每个日期选择器使用唯一 ID。 示例:

<tr>
                    <td>@item.Name</td>
                    <td>
                        <div class="form-group">
                            <div class="input-group date" id="datetimepicker1" data-target-input="nearest">
                                <input type="text" class="form-control datetimepicker-input" data-target="#datetimepicker1" asp-for="@item.Id" value="@item.TrainingDate" id="datetimepicker1"/>
                                <div class="input-group-append" data-target="#datetimepicker1" data-toggle="datetimepicker">
                                    <div class="input-group-text">
                                        <i class="far fa-calendar"></i>
                                        <i class="far fa-clock"></i>
                                    </div>
                                </div>
                            </div>
                        </div>
                    </td>
                </tr>

并更改每一行中的data-targetid,例如datetimepicker2datetimepicker3 并且还像follow一样更改jquery。

    <script type="text/javascript">
$(document).ready(function () 
    $('#datetimepicker1, #datetimepicker2, #datetimepicker3').datetimepicker(
        sideBySide: true,
    );
);

【讨论】:

以上是关于一张桌子上有许多日期选择器的主要内容,如果未能解决你的问题,请参考以下文章

剑道日期选择器随机不显示日历以更改日期

在引导日期选择器中启用特定日期

带有手动输入和动态最小日期的 jQuery UI 日期选择器

日期选择器不显示

JQuery 日期时间选择器 - 只需要选择月份和年份

如何在 Angular 2 中使用日期选择器?