输入框日期选择器不适用于 jQuery DataTables 的所有页面

问题描述 投票:0回答:3

我有一个包含 jQuery 数据表的 jsp 页面,其中包含超过 20 个页面,我在数据表中使用文本框

td
标签,显示日期选择器,即签入/签出日期。

在第一页上它工作得很好,但在其他页面上日期选择器类不适用。这是我使用的以下代码。

HTML 代码

<table id="tableBookingByBooker">
    <thead class="btn-default">
        <tr>
            <th>checkInDate</th>
            <th>checkInDate</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>
                <input id="checkInDate${data[0]}" />
            </td>
            <td>
                <input id="Text1" />
            </td>
        </tr>
    </tbody>
</table>

JS代码:

$('input[id^=checkInDate]').each(function (index, element) {
    var checkOutDate = (new Date($('#checkOutDate' + $(this).attr('id').substring(11)).val()));
    checkOutDate.setDate(checkOutDate.getDate() - 1);
    $(this).datepicker({
        dateFormat: 'mm/dd/yy',
        maxDate: checkOutDate,
    });
});

$('input[id^=checkOutDate]').each(function (index, element) {
    var checkInDate = (new Date($('#checkInDate' + $(this).attr('id').substring(12)).val()));
    checkInDate.setDate(checkInDate.getDate() + 1);
    $(this).datepicker({
        dateFormat: 'mm/dd/yy',
        minDate: checkInDate,
    });
});

输入框(签入/签出)日期选择器在数据表的第一页成功工作,但其他页面日期选择器无法工作。

我尝试了分页事件,并将js代码放入函数click中,但无法正常工作

javascript jquery jsp datepicker datatables
3个回答
1
投票

正如 Ted 指出的,最好的选择是注册一个“页面更改”事件。问题是使用 jquery select 的一次性初始化不会影响动态加载的内容。

可能还有其他方法,但 dataTables 引用的方法看起来像这样。

https://datatables.net/reference/event/page

//Your Check-in UI DatePicker code.
var checkInInit = function () {}
//Your Check-out UI DatePicker code.
var checkOutInit = function () {}

var table = $('#dataTable').DataTable();
$('#dataTable').on('page.dt', function () {
    checkInInit();
    checkOutInit();
});

0
投票

是的,函数调用成功,但应用的代码签入/签出日期选择器不起作用,我已为每个签入日期和签出日期元素指定了唯一的名称。 在这里我应用了以下代码...

// Check-in UI DatePicker code.
    var checkInInit = function () {
        alert('call');
        $('input[id^=checkInDate]').each(function(index, element) {
            var checkOutDate = (new Date($('#checkOutDate'+$(this).attr('id').substring(11)).val()));
            checkOutDate.setDate(checkOutDate.getDate() - 1);
            $(this).datepicker({
                dateFormat:'mm/dd/yy',
                maxDate : checkOutDate,
            });
        });

    }
    // Check-out UI DatePicker code.
    var checkOutInit = function () {
        alert('call');
        $('input[id^=checkOutDate]').each(function(index, element) {
            var checkInDate =(new Date( $('#checkInDate'+$(this).attr('id').substring(12)).val()));
            checkInDate.setDate(checkInDate.getDate() + 1);
                $(this).datepicker({
                dateFormat:'mm/dd/yy',
                minDate : checkInDate,
        });
    });
    }
    $('#tableBookingByBooker').on('page.dt', function () {
        checkInInit();
        checkOutInit();
    });

0
投票

只有我们以下代码:

$(文档).ready(函数() { $("#tableId").DataTable($(".date").datepicker());

});

© www.soinside.com 2019 - 2024. All rights reserved.