设置 HTML 表格内容而不是 Ajax

问题描述

我正在尝试向 html 表格添加高级搜索。 到目前为止,使用 Datatable.js 我设法实现了常规搜索,但是在我使用的主题中,我无法直接从我的 html 中读取信息。 在我在高级搜索主题中使用的 Js 中,表格的内容直接从外部 PHP 文件加载,而不是所需表格实际所在的 html。

如何从我的 HTML 表加载内容而不是从 url 加载 js(Ajax 行)?

JS

"use strict";
var KTDatatablesSearchOptionsAdvancedSearch = function() {

    $.fn.dataTable.Api.register('column().title()',function() {
        return $(this.header()).text().trim();
    });

    var initTable1 = function() {
        // begin first table
        var table = $('#kt_datatable').DataTable({
            responsive: true,// Pagination settings
            dom: `<'row'<'col-sm-12'tr>>
            <'row'<'col-sm-12 col-md-5'i><'col-sm-12 col-md-7 dataTables_pager'lp>>`,// read more: https://datatables.net/examples/basic_init/dom.html

            lengthMenu: [5,10,25,50],pageLength: 10,language: {
                'lengthMenu': 'display _MENU_',},searchDelay: 500,processing: true,serverSide: true,ajax: {
                url: HOST_URL + '/api//datatables/demos/server.PHP',type: 'POST',data: {
                    // parameters for custom backend script demo
                    columnsDef: [
                        'RecordID','OrderID','Country','ShipCity','CompanyAgent','ShipDate','Status','Type','Actions',],columns: [
                {data: 'RecordID'},{data: 'OrderID'},{data: 'Country'},{data: 'ShipCity'},{data: 'CompanyAgent'},{data: 'ShipDate'},{data: 'Status'},{data: 'Type'},{data: 'Actions',responsivePriority: -1},initComplete: function() {
                this.api().columns().every(function() {
                    var column = this;

                    switch (column.title()) {
                        case 'Country':
                            column.data().unique().sort().each(function(d,j) {
                                $('.datatable-input[data-col-index="2"]').append('<option value="' + d + '">' + d + '</option>');
                            });
                            break;

                        case 'Status':
                            var status = {
                                1: {'title': 'Pending','class': 'label-light-primary'},2: {'title': 'Delivered','class': ' label-light-danger'},3: {'title': 'Canceled','class': ' label-light-primary'},4: {'title': 'Success','class': ' label-light-success'},5: {'title': 'Info','class': ' label-light-info'},6: {'title': 'Danger',7: {'title': 'Warning','class': ' label-light-warning'},};
                            column.data().unique().sort().each(function(d,j) {
                                $('.datatable-input[data-col-index="6"]').append('<option value="' + d + '">' + status[d].title + '</option>');
                            });
                            break;

                        case 'Type':
                            var status = {
                                1: {'title': 'Online','state': 'danger'},2: {'title': 'Retail','state': 'primary'},3: {'title': 'Direct','state': 'success'},j) {
                                $('.datatable-input[data-col-index="7"]').append('<option value="' + d + '">' + status[d].title + '</option>');
                            });
                            break;
                    }
                });
            },columnDefs: [
                {
                    targets: -1,title: 'Actions',orderable: false,render: function(data,type,full,Meta) {
                        return '\
                            <div class="dropdown dropdown-inline">\
                                <a href="javascript:;" class="btn btn-sm btn-clean btn-icon" data-toggle="dropdown">\
                                    <i class="la la-cog"></i>\
                                </a>\
                                <div class="dropdown-menu dropdown-menu-sm dropdown-menu-right">\
                                    <ul class="nav nav-hoverable flex-column">\
                                        <li class="nav-item"><a class="nav-link" href="#"><i class="nav-icon la la-edit"></i><span class="nav-text">Edit Details</span></a></li>\
                                        <li class="nav-item"><a class="nav-link" href="#"><i class="nav-icon la la-leaf"></i><span class="nav-text">Update Status</span></a></li>\
                                        <li class="nav-item"><a class="nav-link" href="#"><i class="nav-icon la la-print"></i><span class="nav-text">Print</span></a></li>\
                                    </ul>\
                                </div>\
                            </div>\
                            <a href="javascript:;" class="btn btn-sm btn-clean btn-icon" title="Edit details">\
                                <i class="la la-edit"></i>\
                            </a>\
                            <a href="javascript:;" class="btn btn-sm btn-clean btn-icon" title="Delete">\
                                <i class="la la-trash"></i>\
                            </a>\
                        ';
                    },{
                    targets: 6,Meta) {
                        var status = {
                            1: {'title': 'Pending',};
                        if (typeof status[data] === 'undefined') {
                            return data;
                        }
                        return '<span class="label label-lg font-weight-bold' + status[data].class + ' label-inline">' + status[data].title + '</span>';
                    },{
                    targets: 7,Meta) {
                        var status = {
                            1: {'title': 'Online',};
                        if (typeof status[data] === 'undefined') {
                            return data;
                        }
                        return '<span class="label label-' + status[data].state + ' label-dot mr-2"></span>' +
                            '<span class="font-weight-bold text-' + status[data].state + '">' + status[data].title + '</span>';
                    },});

        var filter = function() {
            var val = $.fn.dataTable.util.escapeRegex($(this).val());
            table.column($(this).data('col-index')).search(val ? val : '',false,false).draw();
        };

        var asdasd = function(value,index) {
            var val = $.fn.dataTable.util.escapeRegex(value);
            table.column(index).search(val ? val : '',true);
        };

        $('#kt_search').on('click',function(e) {
            e.preventDefault();
            var params = {};
            $('.datatable-input').each(function() {
                var i = $(this).data('col-index');
                if (params[i]) {
                    params[i] += '|' + $(this).val();
                }
                else {
                    params[i] = $(this).val();
                }
            });
            $.each(params,function(i,val) {
                // apply search params to datatable
                table.column(i).search(val ? val : '',false);
            });
            table.table().draw();
        });

        $('#kt_reset').on('click',function(e) {
            e.preventDefault();
            $('.datatable-input').each(function() {
                $(this).val('');
                table.column($(this).data('col-index')).search('',false);
            });
            table.table().draw();
        });

        $('#kt_datepicker').datepicker({
            todayHighlight: true,templates: {
                leftArrow: '<i class="la la-angle-left"></i>',rightArrow: '<i class="la la-angle-right"></i>',});

    };

    return {

        //main function to initiate the module
        init: function() {
            initTable1();
        },};

}();

jQuery(document).ready(function() {
    KTDatatablesSearchOptionsAdvancedSearch.init();
});

HTML

<table class="table table-bordered table-hover table-checkable" id="kt_datatable">
                                            <thead>
                                                <tr>

                                                    <th>Record ID</th>
                                                    <th>Order ID</th>
                                                    <th>Country</th>
                                                    <th>Ship City</th>
                                                    <th>Company Agent</th>
                                                    <th>Ship Date</th>
                                                    <th>Status</th>
                                                    <th>Type</th>
                                                    <th>Actions</th>
                                                </tr>
                                            </thead>
                                            <tbody>
                                            <tr>
                                                    <th>2</th>
                                                    <th>sdfdsfs</th>
                                                    <th>sdf</th>
                                                    <th>sdfdsfsf</th>
                                                    <th>sdfsfsfsdfds</th>
                                                    <th>test</th>
                                                    <th>testtt</th>
                                                    <th>test</th>
                                                    <th>Actions</th>
                                                </tr>
                                                <tr>
                                                    <th>33</th>
                                                    <th>sdfdsfs</th>
                                                    <th>sdf</th>
                                                    <th>sdfdsfsf</th>
                                                    <th>sdfsfsfsdfds</th>
                                                    <th>test</th>
                                                    <th>testtt</th>
                                                    <th>test</th>
                                                    <th>testtttt</th>
                                                </tr>
                                            </tbody>
                                            <tfoot>
                                                <tr>
                                                    <th>Record ID</th>
                                                    <th>Order ID</th>
                                                    <th>Country</th>
                                                    <th>Ship City</th>
                                                    <th>Company Agent</th>
                                                    <th>Ship Date</th>
                                                    <th>Status</th>
                                                    <th>Type</th>
                                                    <th>Actions</th>
                                                </tr>
                                            </tfoot>
                                        </table>

解决方法

检查文件:html-table.js 来自:demo(n)\dist\assets\js\pages\crud\ktdatatable\base\html-table.js

有一个完整的例子来说明如何配置 KtDatatable。我认为您是从远程数据而不是 HTML 表中添加选项。 另一种方式是Local数据,但是数据在一个Js上作为一个对象