我在jquery数据表(http://datatables.net)的一列中有一个html multi select field
,我想搜索(从其默认搜索框中)仅选择字段中的选定选项而不是未选中的选项。它目前正在搜索选择字段内的所有文本。
我需要从搜索中删除未选择的选项。
有人可以建议怎么做吗? 谢谢。
修改:我已为其创建了自定义sType
并定义了$.fn.dataTableExt.ofnSearch
。在“基于类型的列过滤”中指定 - (http://datatables.net/development/filtering)。代码如下: -
$.fn.dataTableExt.aTypes.push(
function ( sData )
{
var ishtml=sData.match(/<select(?:.)*?>.*<\/select>/gm);
if (ishtml)
{
return 'comments';
}
return null;
}
);
$.fn.dataTableExt.ofnSearch['comments'] = function ( sData ) {
return sData.replace(/<select(?:.)*?>.*<\/select>/gm, "");
}
并将stype
添加到.dataTable({})
"aoColumnDefs": [{ "sType": "comments", "aTargets": [ 8 ] }],
它将从搜索中删除完整的选择元素文本(已选中和未选中)。然后我将使用jquery将选定的选项添加到select之外的隐藏div中,以便在搜索中使用它们。 但这仍然是在考虑选择字段文本。
有什么想法吗?如果有人可以提供帮助,请告诉我。
答案 0 :(得分:1)
您可以使用fnFilter搜索复选框是否包含已检查的术语。如何使用fnFilter 在此描述:jQuery DataTables - Filter column by exact match
oTable.fnFilter(“^”+ TERM +“$”,COLUMN,true); // Term,Column#, RegExp过滤器
因此,在您的表格中,您可以过滤:
//all unchecked boxes
table.fnFilter('^((?!checked).)*$', COLUMN, true);
//all checked boxes
table.fnFilter('checked', COLUMN, true);
(COLUMN用于复选框所在的列;)),true用于启用正则表达式搜索(必须启用搜索未选中复选框,选中已选中复选框,因为我们此处未使用正则表达式)。
PS:我认为这是最好的方法,但绝对有效