独立列搜索(选择输入)
这个示例与基于文本的独立列示例几乎相同,并且提供了相同的功能,但此处使用 select
输入控件。
在表格初始化后,API 用于构建 select
输入,通过使用 columns().every()
来遍历列(如果需要,还可以使用 columns()
选择器来限制所选的列),然后使用 column().data()
方法来按次序获取每一列的数据。辅助方法 unique()
和 sort()
也用于将设置输入的数据减少为唯一而有序的元素。最后,来自 select
输入的 change
事件用于通过 column().search()
方法触发列搜索。
请注意,column().search()
方法在此特定情况下通过可用作 DataTables.SearchOptions
对象一部分的 exact
选项执行精确匹配,可用该对象来配置 DataTable 搜索的操作方式。
还要注意,此示例演示了使用 initComplete
,当表已完全加载时触发回调函数。在这个示例中不需要使用此回调,因为数据在加载时在表中可用,但在 Ajax 加载数据的情况下,initComplete
在数据已加载后执行代码时很有用。
姓名 | 岗位 | 部门 | 年龄 | 入职时间 | 工资 |
---|---|---|---|---|---|
虎尼克森 | 系统架构师 | 爱丁堡 | 61 | 2011-04-25 | $320,800 |
加勒特温特斯 | 会计师 | 东京 | 63 | 2011-07-25 | $170,750 |
阿什顿考克斯 | 初级技术作者 | 旧金山 | 66 | 2009-01-12 | $86,000 |
西德里克凯利 | 高级 JavaScript 开发人员 | 爱丁堡 | 22 | 2012-03-29 | $433,060 |
艾丽佐藤 | 会计师 | 东京 | 33 | 2008-11-28 | $162,700 |
布里埃尔威廉姆森 | 集成专家 | 纽约 | 61 | 2012-12-02 | $372,000 |
赫罗德钱德勒 | 销售助手 | 旧金山 | 59 | 2012-08-06 | $137,500 |
罗娜戴维森 | 集成专家 | 东京 | 55 | 2010-10-14 | $327,900 |
科琳赫斯特 | JavaScript 开发人员 | 旧金山 | 39 | 2009-09-15 | $205,500 |
索尼娅弗罗斯特 | 软件工程师 | 爱丁堡 | 23 | 2008-12-13 | $103,600 |
杰纳盖恩斯 | 办公室经理 | 伦敦 | 30 | 2008-12-19 | $90,560 |
奎因弗林 | 支持负责人 | 爱丁堡 | 22 | 2013-03-03 | $342,000 |
沙德马歇尔 | 区域主管 | 旧金山 | 36 | 2008-10-16 | $470,600 |
海莉肯尼迪 | 高级营销设计师 | 伦敦 | 43 | 2012-12-18 | $313,500 |
塔蒂亚娜菲茨帕特里克 | 区域主管 | 伦敦 | 19 | 2010-03-17 | $385,750 |
迈克尔西尔瓦 | 营销设计师 | 伦敦 | 66 | 2012-11-27 | $198,500 |
保罗伯德 | 首席财务官 (CFO) | 纽约 | 64 | 2010-06-09 | $725,000 |
格洛丽亚利特尔 | 系统管理员 | 纽约 | 59 | 2009-04-10 | $237,500 |
布拉德利格里尔 | 软件工程师 | 伦敦 | 41 | 2012-10-13 | $132,000 |
戴里奥斯 | 人事负责人 | 爱丁堡 | 35 | 2012-09-26 | $217,500 |
珍妮特考德威尔 | 开发负责人 | 纽约 | 30 | 2011-09-03 | $345,000 |
尤里贝瑞 | 首席营销官 (CMO) | 纽约 | 40 | 2009-06-25 | $675,000 |
凯撒万斯 | 售前支持 | 纽约 | 21 | 2011-12-12 | $106,450 |
多丽丝威尔德 | 销售助手 | 悉尼 | 23 | 2010-09-20 | $85,600 |
安吉丽卡拉莫斯 | 首席执行官 (CEO) | 伦敦 | 47 | 2009-10-09 | $1,200,000 |
Gavin Joyce | 开发人员 | 爱丁堡 | 42 | 2010-12-22 | $92,575 |
Jennifer Chang | 区域主管 | 新加坡 | 28 | 2010-11-14 | $357,650 |
Brenden Wagner | 软件工程师 | 旧金山 | 28 | 2011-06-07 | $206,850 |
Fiona Green | 首席运营官 (COO) | 旧金山 | 48 | 2010-03-11 | $850,000 |
Shou Itou | 区域营销 | 东京 | 20 | 2011-08-14 | $163,000 |
Michelle House | 集成专家 | 悉尼 | 37 | 2011-06-02 | $95,400 |
Suki Burks | 开发人员 | 伦敦 | 53 | 2009-10-22 | $114,500 |
Prescott Bartlett | 技术作者 | 伦敦 | 27 | 2011-05-07 | $145,000 |
Gavin Cortez | 团队主管 | 旧金山 | 22 | 2008-10-26 | $235,500 |
Martena Mccray | 售后支持 | 爱丁堡 | 46 | 2011-03-09 | $324,050 |
Unity Butler | 营销设计师 | 旧金山 | 47 | 2009-12-09 | $85,675 |
Howard Hatfield | 办公室经理 | 旧金山 | 51 | 2008-12-16 | $164,500 |
Hope Fuentes | 秘书 | 旧金山 | 41 | 2010-02-12 | $109,850 |
Vivian Harrell | 财务总监 | 旧金山 | 62 | 2009-02-14 | $452,500 |
Timothy Mooney | 办公室经理 | 伦敦 | 37 | 2008-12-11 | $136,200 |
Jackson Bradshaw | 董事 | 纽约 | 65 | 2008-09-26 | $645,750 |
Olivia Liang | 支持工程师 | 新加坡 | 64 | 2011-02-03 | $234,500 |
Bruno Nash | 软件工程师 | 伦敦 | 38 | 2011-05-03 | $163,500 |
Sakura Yamamoto | 支持工程师 | 东京 | 37 | 2009-08-19 | $139,575 |
Thor Walton | 开发人员 | 纽约 | 61 | 2013-08-11 | $98,540 |
Finn Camacho | 支持工程师 | 旧金山 | 47 | 2009-07-07 | $87,500 |
Serge Baldwin | 数据协调员 | 新加坡 | 64 | 2012-04-09 | $138,575 |
Zenaida Frank | 软件工程师 | 纽约 | 63 | 2010-01-04 | $125,250 |
Zorita Serrano | 软件工程师 | 旧金山 | 56 | 2012-06-01 | $115,000 |
Jennifer Acosta | 初级 Javascript 开发人员 | 爱丁堡 | 43 | 2013-02-01 | $75,650 |
Cara Stevens | 销售助手 | 纽约 | 46 | 2011-12-06 | $145,600 |
Hermione Butler | 区域主管 | 伦敦 | 47 | 2011-03-21 | $356,250 |
Lael Greer | 系统管理员 | 伦敦 | 21 | 2009-02-27 | $103,500 |
Jonas Alexander | 开发人员 | 旧金山 | 30 | 2010-07-14 | $86,500 |
Shad Decker | 区域主管 | 爱丁堡 | 51 | 2008-11-13 | $183,000 |
Michael Bruce | JavaScript 开发人员 | 新加坡 | 29 | 2011-06-27 | $183,000 |
Donna Snider | 客户支持 | 纽约 | 27 | 2011-01-25 | $112,000 |
姓名 | 岗位 | 部门 | 年龄 | 入职时间 | 工资 |
- Javascript
- HTML
- CSS
- Ajax
- 服务器端脚本
- 评论
下面显示的 Javascript 用于初始化此示例中显示的表
$('#example').DataTable({ initComplete: function () { this.api() .columns() .every(function () { var column = this; // 创建 select 元素和监听器 var select = $('<select><option value=""></option></select>') .appendTo($(column.footer()).empty()) .on('change', function () { column .search($(this).val(), {exact: true}) .draw(); }); // 添加选项 column .data() .unique() .sort() .each(function (d, j) { select.append( '<option value="' + d + '">' + d + '</option>' ); }); }); } });
new DataTable('#example', { initComplete: function () { this.api() .columns() .every(function () { let column = this; // 创建 select 元素 let select = document.createElement('select'); select.add(new Option('')); column.footer().replaceChildren(select); // 为用户更改值应用监听器 select.addEventListener('change', function () { column .search(select.value, {exact: true}) .draw(); }); // 添加选项 column .data() .unique() .sort() .each(function (d, j) { select.add(new Option(d)); }); }); } });
除上述代码外,此示例还加载了以下 Javascript 库文件供使用
下面显示的是原始 HTML 表元素,但在 DataTables 增强之前
此示例使用了库文件(见下文)之外的一些额外 CSS,以正确显示表格。下面显示了所使用的附加 CSS
此示例加载了以下 CSS 库文件供使用,以提供表的样式
该表通过 Ajax 加载数据。已加载的最新数据如下所示。此数据会随着加载任何其他数据而自动更新。
下面显示用于执行此表的服务器端处理的脚本。请注意,这只是使用 PHP 的示例脚本。服务器端处理脚本可以使用任何语言编写,使用 DataTables 文档中描述的协议。