使用 DataTables 时,自定义下拉搜索不允许我添加新项目

Posted

技术标签:

【中文标题】使用 DataTables 时,自定义下拉搜索不允许我添加新项目【英文标题】:Custom Drop down search won't allow me to add new items when using DataTables 【发布时间】:2021-09-29 03:42:59 【问题描述】:

我使用 DataTables、类别下拉搜索框和文本字段搜索框创建了一个带有静态 html 表的 HTML 页面。一切正常,除非我尝试在原始 3(类别 1、类别 2、类别 3)之外添加新类别。这些搜索和过滤表中的每一个都正确。但是,如果我添加一个新类别(绘图),它会告诉我“未找到条目”,即使我用新类别标记了几行数据。如果我将旧类别选项值之一(例如类别 3)更改为“绘制”,它将过滤表格并显示所有带有 td 项目标记为类别 3 的行。为什么表格不接受新的下拉选项和/ 或未在表中找到新选项?

HTML:

<section id="autocad-table">
            <div class="table-container">
                <div class="category-filter">
                    <label for="Category">What Type Of Code Do You Need?</label>
                    <select class="dropdown" name="Category" id="categoryFilter">
                        <option value="">All</option>
                        <option value="1">Category 1</option>
                        <option value="2">Category 2</option>
                        <option value="3">Category 3</option>
                        <option value="4">Draw</option>
                    </select>
                </div>
                <table id="commandsTable" class="stripe hover">
                    <thead>
                        <th>Command</th>
                        <th>Description</th>
                        <th>Category</th>
                    </thead>
                    <tbody id="commandsTableBody">
                        <tr>
                            <td>0_FILLET</td>
                            <td>Create a 0" radius fillet</td>
                            <td>Category 1</td>
                        </tr>
                        <tr>
                            <td>ALLFLAT</td>
                            <td>Flatten all objects in all blocks & layouts</td>
                            <td>Category 2</td>
                        </tr>
                        <tr>
                            <td>ANNO_TO_SQUEEZE</td>
                            <td>Convert an annotation to the SQUEEZE text style</td>
                            <td>Category 2</td>
                        </tr>
                        <tr>
                            <td>ARR</td>
                            <td>Creates an array of a selected object at a specified angle</td>
                            <td>Category 2, Category 1</td>
                        </tr>
                        <tr>
                            <td>ATC</td>
                            <td>Changes an arc into a circle</td>
                            <td>Category 3</td>
                        </tr>
                        <tr>
                            <td>BA</td>
                            <td>Bend Allowance</td>
                            <td>Category 3</td>
                        </tr>
                        <tr>
                            <td>BB</td>
                            <td>BOM Ball</td>
                            <td>Category 3</td>
                        </tr>
                        <tr>
                            <td>BC</td>
                            <td>Add 'BC' to dimensions</td>
                            <td>Category 3</td>
                        </tr>
                        <tr>
                            <td>CENT</td>
                            <td>Change Entities</td>
                            <td>Category 3</td>
                        </tr>
                        <tr>
                            <td>CH</td>
                            <td>CHPROP</td>
                            <td>Category 3</td>
                        </tr>
                        <tr>
                            <td>CO</td>
                            <td>COPY</td>
                            <td>Category 3</td>
                        </tr>
                        <tr>
                            <td>COPLAY</td>
                            <td>Sets current layer to that of a selected entity</td>
                            <td>Category 3</td>
                        </tr>
                        <tr>
                            <td>CREATE_BOUNDARY</td>
                            <td>Creates a boundary (polyline) from objects made with CVFLAT-D or NTFLAT-D</td>
                            <td>Category 3</td>
                        </tr>
                        <tr>
                            <td>CS</td>
                            <td>Copies items on a selected layer</td>
                            <td>Category 3</td>
                        </tr>
                        <tr>
                            <td>CSM</td>
                            <td>Copies items on multiple selected layers</td>
                            <td>Category 3</td>
                        </tr>
                        <tr>
                            <td>CVEDGE</td>
                            <td>Draws edges for a Curve section. Uses Command line prompting.</td>
                            <td>Draw</td>
                        </tr>
                        <tr>
                            <td>CVEDGE-D</td>
                            <td>Using a dialog box, draws all edges of a Curve section and dimensions</td>
                            <td>Draw</td>
                        </tr>
                        <tr>
                            <td>CVFLAT</td>
                            <td>Draws the flat views (with holes) of plates used for covers, dividers, and bottoms of curved conveyor sections</td>
                            <td>Draw</td>
                        </tr>
                        <tr>
                            <td>CVFLAT-D</td>
                            <td>Similar to CVFLAT, but uses a dialog box and can draw multiple views with dimensions</td>
                            <td>Draw</td>
                        </tr>
                        <tr>
                            <td>CV_CLEANOUTFLAT (CVCO)</td>
                            <td>Develop flat bar for self-cleaning Tails.</td>
                            <td>Category 3</td>
                        </tr>
                        <tr>
                            <td>CWEIGHT</td>
                            <td>Weight calculator for carbon steel</td>
                            <td>Category 3, Category 1</td>
                        </tr>
                        <tr>
                            <td>DC</td>
                            <td>Dimension Circle - dimension alignment guide</td>
                            <td>Category 3</td>
                        </tr>
                        <tr>
                            <td>DD</td>
                            <td>DIMSTYLE</td>
                            <td>Category 3</td>
                        </tr>
                        <tr>
                            <td>DF</td>
                            <td>Double Fillet - Fillets the inside and outside of a corner</td>
                            <td>Category 3</td>
                        </tr>
                        <tr>
                            <td>DXW</td>
                            <td>NMC_DxfOut - shortcut for main command</td>
                            <td>Category 1</td>
                        </tr>
                        <tr>
                            <td>DYNOFF</td>
                            <td>Dynamic Offset</td>
                            <td>Category 1</td>
                        </tr>
                        <tr>
                            <td>EP</td>
                            <td>EXPLODE</td>
                            <td>Category 1</td>
                        </tr>
                        <tr>
                            <td>ES</td>
                            <td>Erases items on a selected layer</td>
                            <td>Category 1</td>
                        </tr>
                        <tr>
                            <td>F_LINE</td>
                            <td>Reliance Electric Firstline Bearing Templates</td>
                            <td>Category 1, Category 2</td>
                        </tr>
                        <tr>
                            <td>GA</td>
                            <td>Add 'GA' to dimensions</td>
                            <td>Category 1</td>
                        </tr>
                        <tr>
                            <td>H</td>
                            <td>Draws a standard hole side view</td>
                            <td>Draw</td>
                        </tr>
                        <tr>
                            <td>LD2MLD</td>
                            <td>Changes selected Leader and MText into a MultiLeader</td>
                            <td>Category 1</td>
                        </tr>
                        <tr>
                            <td>LF</td>
                            <td>Changes selected dimensions' length factor to 0.25</td>
                            <td>Category 1</td>
                        </tr>
                        <tr>
                            <td>MI</td>
                            <td>MIRROR</td>
                            <td>Category 1</td>
                        </tr>
                        <tr>
                            <td>MLL</td>
                            <td>Makes a custom layer selected from a list and sets it current</td>
                            <td>Category 1</td>
                        </tr>
                        <tr>
                            <td>MOS</td>
                            <td>Moves items on a selected layer</td>
                            <td>Category 1</td>
                        </tr>
                        <tr>
                            <td>NMC_LoadDwgs</td>
                            <td>Load (open) the list of drawings previously saved with NMC_SaveDwgs</td>
                            <td>Draw</td>
                        </tr>
                        <tr>
                            <td>NMC_Object_Property_Correction (NOPC)</td>
                            <td>Corrects select object properties to match NMS layer standards. </td>
                            <td>Category 1</td>
                        </tr>
                        <tr>
                            <td>NMC_SaveDwgs</td>
                            <td>Save the currently open drawings to a list</td>
                            <td>Category 2</td>
                        </tr>
                        <tr>
                            <td>OH</td>
                            <td>Offset objects to HIDDEN layer</td>
                            <td>Category 2</td>
                        </tr>
                        <tr>
                            <td>OO</td>
                            <td>Offset an object and then delete it</td>
                            <td>Category 2</td>
                        </tr>
                        <tr>
                            <td>ZW</td>
                            <td>ZOOM Window</td>
                            <td>Category 1</td>
                        </tr>
                    </tbody>
                </table>
            </div>
        </section>

javascript

//This was coded using the DataTable jQuery library

$(document).ready( function () //加载文档 var oTable = $('#commandsTable').DataTable( //建表 “分页”:假, “排序”:错误, “信息”:错误, “搜索高亮”:是的, );

 $('#categoryFilter').change(function ()  //check the status of the drop down menu and filter accordingly
    var selectedValue = $(this).val();
    oTable.column(2).search(selectedValue).draw();
)

$('input[type=search]').addClass('search-box'); //add class to DataTable search box
$('.search-box').after('<button class="close-icon" type="reset"></button>'); //add reset button to search box

$('.close-icon').hide(); //set close button to be hidden as default

//Check if the box is empty
$('.search-box').on("input", function() 
    var searchValue = $(this).val(); //store search box value as a variable
    if(searchValue != "")  //if search field is not empty, show the reset button
        $('.close-icon').show();
     else 
        $('.close-icon').hide();
    ;
);

$('.close-icon').click(function()  //clicking the reset button clears the field
    $('.close-icon').hide(); //hide reset button
    oTable.columns().every(function()  //set search field to "empty"
        this.search('');
    );
    oTable.search('').draw(); //if search field is empty, redraw the table
);

);

如果您需要任何说明,请告诉我。如果代码的格式被关闭,我也很抱歉。

【问题讨论】:

【参考方案1】:

您的选项值当前设置如下:

<option value="4">Draw</option>

这意味着您的代码使用值4 进行搜索。将选项更改为:

<option value="Draw">Draw</option>

以下行是从option 元素中提取value 属性的示例:

var searchValue = $(this).val();

注意val() - 这是检索值,而不是可见标签。

(请记住,当您选择Category 1 时,您只是在搜索1,依此类推。如果您将Alt. Category 1 作为可能的值,那也会干扰您的过滤器。您可以想清理其他选项值,使每个值与标签完全匹配。)

【讨论】:

用刘海把头撞在桌子上 呵呵。我早该知道。非常感谢! 我很熟悉那种感觉。顺便说一句,如果你想使用标签,你可以使用text()而不是val() 我不知道 text()。谢谢!

以上是关于使用 DataTables 时,自定义下拉搜索不允许我添加新项目的主要内容,如果未能解决你的问题,请参考以下文章

DataTables自定义搜索栏问题

使用 Angular 4 在 datatables.net 中实现自定义搜索

DataTables - 使用单个下拉菜单在多列中搜索

jquery datatables:如何清除列搜索过滤器

当整个列中包含带有下拉列表的单元格时,如何应用搜索(jQuery DataTables)? [关闭]

DataTables 中的单个下拉列表中的多列过滤