javascript - jQuery click 函数只执行一次

标签 javascript jquery html twitter-bootstrap datepicker

我正在使用来自此来源的 Bootstrap 日期选择器:http://eonasdan.github.io/bootstrap-datetimepicker/

我已经有了一个日期选择器,几乎就像我想要的那样,一个内联选择器,我需要从中检测更改(实时)。 它看起来像这样:

enter image description here

它是用以下代码生成的:

<div class="row">
    <div class="col-md-6">
        <div id="start_datepicker"></div>
    </div>
    <div class="col-md-6">
        <div id="start_timepicker"></div>
    </div>
</div>

以及调用它的 Javascript:

$('#start_datepicker').datetimepicker(
{
    format: "D-M-Y",
    locale: "de",
    inline: true,
    calendarWeeks: true
});

$('#start_timepicker').datetimepicker(
{
    format: "HHmm",
    stepping: 15,
    locale: "de",
    inline: true
});

这工作正常并生成一些如下所示的代码:

<div id="start_datepicker" style="">
    <div class="bootstrap-datetimepicker-widget usetwentyfour" style="display: block;">
        <ul class="list-unstyled">
            <li>
                <div class="datepicker">
                    <div class="datepicker-days" style="display: block;">
                        <table class="table-condensed">
                            <thead>
                                <tr>
                                    <th class="prev" data-action="previous"><span class="glyphicon glyphicon-chevron-left" title=
                                    "Previous Month"></span></th>
                                    <th class="picker-switch" colspan="6" data-action="pickerSwitch" title="Select Month">Mai 2016</th>
                                    <th class="next" data-action="next"><span class="glyphicon glyphicon-chevron-right" title="Next Month"></span></th>
                                </tr>
                                <tr>
                                    <th class="cw">#</th>
                                    <th class="dow">Mo</th>
                                    <th class="dow">Di</th>
                                    <th class="dow">Mi</th>
                                    <th class="dow">Do</th>
                                    <th class="dow">Fr</th>
                                    <th class="dow">Sa</th>
                                    <th class="dow">So</th>
                                </tr>
                            </thead>
                            <tbody>
                                <tr>
                                    <td class="cw">17</td>
                                    <td class="day old" data-action="selectDay" data-day="25.04.2016">25</td>
                                    <td class="day old" data-action="selectDay" data-day="26.04.2016">26</td>
                                    <td class="day old" data-action="selectDay" data-day="27.04.2016">27</td>
                                    <td class="day old" data-action="selectDay" data-day="28.04.2016">28</td>
                                    <td class="day old" data-action="selectDay" data-day="29.04.2016">29</td>
                                    <td class="day old weekend" data-action="selectDay" data-day="30.04.2016">30</td>
                                    <td class="day weekend" data-action="selectDay" data-day="01.05.2016">1</td>
                                </tr>
                                <tr>
                                    <td class="cw">18</td>
                                    <td class="day" data-action="selectDay" data-day="02.05.2016">2</td>
                                    <td class="day" data-action="selectDay" data-day="03.05.2016">3</td>
                                    <td class="day" data-action="selectDay" data-day="04.05.2016">4</td>
                                    <td class="day" data-action="selectDay" data-day="05.05.2016">5</td>
                                    <td class="day" data-action="selectDay" data-day="06.05.2016">6</td>
                                    <td class="day weekend" data-action="selectDay" data-day="07.05.2016">7</td>
                                    <td class="day weekend" data-action="selectDay" data-day="08.05.2016">8</td>
                                </tr>
                                <tr>
                                    <td class="cw">19</td>
                                    <td class="day" data-action="selectDay" data-day="09.05.2016">9</td>
                                    <td class="day active today" data-action="selectDay" data-day="10.05.2016">10</td>
                                    <td class="day" data-action="selectDay" data-day="11.05.2016">11</td>
                                    <td class="day" data-action="selectDay" data-day="12.05.2016">12</td>
                                    <td class="day" data-action="selectDay" data-day="13.05.2016">13</td>
                                    <td class="day weekend" data-action="selectDay" data-day="14.05.2016">14</td>
                                    <td class="day weekend" data-action="selectDay" data-day="15.05.2016">15</td>
                                </tr>
                                <tr>
                                    <td class="cw">20</td>
                                    <td class="day" data-action="selectDay" data-day="16.05.2016">16</td>
                                    <td class="day" data-action="selectDay" data-day="17.05.2016">17</td>
                                    <td class="day" data-action="selectDay" data-day="18.05.2016">18</td>
                                    <td class="day" data-action="selectDay" data-day="19.05.2016">19</td>
                                    <td class="day" data-action="selectDay" data-day="20.05.2016">20</td>
                                    <td class="day weekend" data-action="selectDay" data-day="21.05.2016">21</td>
                                    <td class="day weekend" data-action="selectDay" data-day="22.05.2016">22</td>
                                </tr>
                                <tr>
                                    <td class="cw">21</td>
                                    <td class="day" data-action="selectDay" data-day="23.05.2016">23</td>
                                    <td class="day" data-action="selectDay" data-day="24.05.2016">24</td>
                                    <td class="day" data-action="selectDay" data-day="25.05.2016">25</td>
                                    <td class="day" data-action="selectDay" data-day="26.05.2016">26</td>
                                    <td class="day" data-action="selectDay" data-day="27.05.2016">27</td>
                                    <td class="day weekend" data-action="selectDay" data-day="28.05.2016">28</td>
                                    <td class="day weekend" data-action="selectDay" data-day="29.05.2016">29</td>
                                </tr>
                                <tr>
                                    <td class="cw">22</td>
                                    <td class="day" data-action="selectDay" data-day="30.05.2016">30</td>
                                    <td class="day" data-action="selectDay" data-day="31.05.2016">31</td>
                                    <td class="day new" data-action="selectDay" data-day="01.06.2016">1</td>
                                    <td class="day new" data-action="selectDay" data-day="02.06.2016">2</td>
                                    <td class="day new" data-action="selectDay" data-day="03.06.2016">3</td>
                                    <td class="day new weekend" data-action="selectDay" data-day="04.06.2016">4</td>
                                    <td class="day new weekend" data-action="selectDay" data-day="05.06.2016">5</td>
                                </tr>
                            </tbody>
                        </table>
                    </div>
                    <div class="datepicker-months" style="display: none;">
                        <table class="table-condensed">
                            <thead>
                                <tr>
                                    <th class="prev" data-action="previous"><span class="glyphicon glyphicon-chevron-left" title=
                                    "Previous Year"></span></th>
                                    <th class="picker-switch" colspan="6" data-action="pickerSwitch" title="Select Year">2016</th>
                                    <th class="next" data-action="next"><span class="glyphicon glyphicon-chevron-right" title="Next Year"></span></th>
                                </tr>
                            </thead>
                            <tbody>
                                <tr>
                                    <td colspan="8"><span class="month" data-action="selectMonth">Jan.</span><span class="month" data-action=
                                    "selectMonth">Febr.</span><span class="month" data-action="selectMonth">Mrz.</span><span class="month" data-action=
                                    "selectMonth">Apr.</span><span class="month active" data-action="selectMonth">Mai</span><span class="month"
                                    data-action="selectMonth">Jun.</span><span class="month" data-action="selectMonth">Jul.</span><span class="month"
                                    data-action="selectMonth">Aug.</span><span class="month" data-action="selectMonth">Sept.</span><span class="month"
                                    data-action="selectMonth">Okt.</span><span class="month" data-action="selectMonth">Nov.</span><span class="month"
                                    data-action="selectMonth">Dez.</span></td>
                                </tr>
                            </tbody>
                        </table>
                    </div>
                    <div class="datepicker-years" style="display: none;">
                        <table class="table-condensed">
                            <thead>
                                <tr>
                                    <th class="prev" data-action="previous"><span class="glyphicon glyphicon-chevron-left" title="Next Decade"></span></th>
                                    <th class="picker-switch" colspan="6" data-action="pickerSwitch" title="Select Decade">2011-2022</th>
                                    <th class="next" data-action="next"><span class="glyphicon glyphicon-chevron-right" title=
                                    "Previous Decade"></span></th>
                                </tr>
                            </thead>
                            <tbody>
                                <tr>
                                    <td colspan="8"><span class="year" data-action="selectYear">2011</span><span class="year" data-action=
                                    "selectYear">2012</span><span class="year" data-action="selectYear">2013</span><span class="year" data-action=
                                    "selectYear">2014</span><span class="year" data-action="selectYear">2015</span><span class="year active" data-action=
                                    "selectYear">2016</span><span class="year" data-action="selectYear">2017</span><span class="year" data-action=
                                    "selectYear">2018</span><span class="year" data-action="selectYear">2019</span><span class="year" data-action=
                                    "selectYear">2020</span><span class="year" data-action="selectYear">2021</span><span class="year" data-action=
                                    "selectYear">2022</span></td>
                                </tr>
                            </tbody>
                        </table>
                    </div>
                    <div class="datepicker-decades" style="display: none;">
                        <table class="table-condensed">
                            <thead>
                                <tr>
                                    <th class="prev" data-action="previous"><span class="glyphicon glyphicon-chevron-left" title=
                                    "Previous Century"></span></th>
                                    <th class="picker-switch" colspan="6" data-action="pickerSwitch">1999-2099</th>
                                    <th class="next" data-action="next"><span class="glyphicon glyphicon-chevron-right" title="Next Century"></span></th>
                                </tr>
                            </thead>
                            <tbody>
                                <tr>
                                    <td colspan="8"><span class="decade" data-action="selectDecade" data-selection="2005">2000 - 2011</span><span class=
                                    "decade" data-action="selectDecade" data-selection="2017">2012 - 2023</span><span class="decade" data-action=
                                    "selectDecade" data-selection="2029">2024 - 2035</span><span class="decade" data-action="selectDecade" data-selection=
                                    "2041">2036 - 2047</span><span class="decade" data-action="selectDecade" data-selection="2053">2048 -
                                    2059</span><span class="decade" data-action="selectDecade" data-selection="2065">2060 - 2071</span><span class="decade"
                                    data-action="selectDecade" data-selection="2077">2072 - 2083</span><span class="decade" data-action="selectDecade"
                                    data-selection="2089">2084 - 2095</span><span class="decade" data-action="selectDecade" data-selection="2101">2096 -
                                    2107</span><span></span><span></span><span></span></td>
                                </tr>
                            </tbody>
                        </table>
                    </div>
                </div>
            </li>
            <li class="picker-switch accordion-toggle">
                <table class="table-condensed">
                    <tbody>
                        <tr>
                            <td></td>
                        </tr>
                    </tbody>
                </table>
            </li>
        </ul>
    </div>
</div>

深蓝色线突出显示当前 td 元素,该元素的类处于事件状态。每次更改时(此类始终只有一个 td 元素) 我想更新另一个元素并将其设置为当前事件元素的属性 data-day 的值(无需定期检查)。

我已经有一个可以工作的小片段,但只有一次并且不完全正确。如果我在获取初始事件 td 的值后更改它,并且对于任何进一步的更改,该值保持不变(显示它的元素,一个 id 为 start_date 的跨度)。

此代码应该实现所需的行为:

$('#start_datepicker').find("td").click(function()
{
    $("#start_date").text($('#start_datepicker').find(".active").attr("data-day"));
});

我认为错误一定在上面3行之内。

如果我需要添加更多信息来澄清我的问题,请告诉我。

提前致谢 约翰

最佳答案

documentation要求听 dp.change。这应该有效:

$("#start_datepicker").on("dp.change", function (e) {
   $("#start_date").text(e.date);
});

关于javascript - jQuery click 函数只执行一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37139794/

相关文章:

html - 仅限垂直滚动表格

javascript - 我想模仿 javascript 正则表达式中的条件

javascript - PHP AJAX - &lt;input&gt; 元素可以像 <form> 一样具有 "action"吗?

javascript - 将选择的(单击的)选项传递到输入框

javascript - 未初始化常量 ActionView::CompiledTemplates::Current

html - 如何使用 CSS 展平复选框?

css - 将 html 表导出为 pdf,其所有 css 完好无损

javascript - 在 d3.js 中使用 csv 文件代替 json 文件

javascript - AngularJS 无法加载 ng-view inti index.html

javascript - 当光标在div的边缘时如何滚动?