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() は、複数回起動していることを示しています。2 回目にクリックすると 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 に答える