0

我正在使用以下代码显示内联日期选择器;

    $('.show_datepicker').datepicker({
        weekStart:  1,
        startDate : '2013-07-31',
        endDate : '2013-09-30',
        format : 'yyyy-mm-dd',
    }).on('changeDate', function(e){
        $('.datepicker-inline').on('click', '.datepicker_days:not(.disabled)', function() {
            $('.loading').show(); // Show loading icon
            $("#loading_div").load("loading_url.php",function(){
                $('.loading').hide(); // Hide loading icon when finished
            });
        });
    });

问题 1

这一切都很好,除了当我第一次点击一天时它不会触发。在初始点击之后,只要我在页面上就可以了。但是每次我刷新页面时,我都必须第一次点击任何日期才能让它在之后工作。

我想这是因为函数内部有单独的 onclick 事件,但我需要将所有 .disabled 天从调用中排除,并且无法使其正常工作。

问题 2

console.log() 告诉我它触发了多次——当我第二次单击它时它触发了 4 次,当我再次单击它时它触发了 6 次,依此类推。

任何想法将不胜感激!

更新:

这是呈现的日期选择器的 html 代码:

<div id="datepicker" class="show_datepicker table table-hover table-striped" data-date="2013-08-01">
<div class="datepicker datepicker-inline">
    <div class="datepicker-days" style="display: block;">
        <table class=" table-condensed">
        [...]
        <tbody>
            <tr>
                [...]
                <td class="datepicker_days day alternative" id="2013-08-12">12</td>
                <td class="datepicker_days day alternative" id="2013-08-13">13</td>
                <td class="datepicker_days day" id="2013-08-14">14</td>
                <td class="datepicker_days day inaktiv btn-link disabled" id="2013-08-15">15</td>
                <td class="datepicker_days day" id="2013-08-16">16</td>
                <td class="datepicker_days day" id="2013-08-17">17</td>
                <td class="datepicker_days day disabled inaktiv btn-link" id="2013-08-18">18</td>
                [...]
            </tr>
        </tbody>
        [...]
    </table>
    </div>
</div>

4

1 回答 1

0

如果changeDate单击.disabled日期时未触发,则您无需担心过滤无效日期。您可以删除您正确怀疑导致多次触发且未响应第一次单击的单击处理程序——您尚未更改日期,因此未注册单击处理程序。

.on('changeDate', function(e){
    // won't fire on a .disabled date anyway
    $('.loading').show(); // Show loading icon
    $("#loading_div").load("loading_url.php",function(){
        $('.loading').hide(); // Hide loading icon when finished
    });
});
于 2013-07-31T20:41:33.343 回答