JQuery Datatables 在输入和选择中搜索 [英] JQuery Datatables search within input and select

查看:19
本文介绍了JQuery Datatables 在输入和选择中搜索的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

使用带有输入和选择的 Jquery 数据表,如下所示:http://datatables.net/examples/api/form.html或者,如果我使用自定义列呈现处理程序来生成输入并选择如何使全局表搜索工作?

如果您查看示例,您会注意到只有第一列(只读列)包含在搜索中,我该怎么做才能将其他列包含在搜索中?

如果您查看我问题中链接中的示例并在搜索中输入Tokyo",则会返回所有行.这是因为东京"是所有下拉菜单中的一个选项.我只想显示选择了东京的行.如果您输入33",即使第一行的第一列中的值为33",您也看不到任何行.

我似乎找不到任何关于如何为数据表中的特定单元格定义搜索值的文档.

解决方案

它没有很好的文档记录.它似乎在(子)版本之间工作不同,或者根本不工作.我认为 dataTables 旨在自动检测 HTML 列,但出于某种原因,大多数情况下,它不会.最安全的方法是创建自己的搜索过滤器:

$.fn.dataTableExt.ofnSearch['html-input'] = function(value) {返回 $(value).val();};

这将在 上返回 33,值为 33,Tokyo 时也存在问题,即编辑值不是改变 value 属性本身.因此,即使您调用 invalidate(),您最终仍会过滤旧的硬编码"值.

但我已经找到了解决方案.强制 value 属性用 的当前值(新值)和then 调用 invalidate :

$("#example td input").on('change', function() {var $td = $(this).closest('td');$td.find('input').attr('value', this.value);table.cell($td).invalidate();});

对于文本区域使用 text() 代替:

$("#example td textarea").on('change', function() {var $td = $(this).closest('td');$td.find('textarea').text(this.value);table.cell($td).invalidate();});

在处理

发送“验证码”获取 | 15天全站免登陆