Jquery数据表:如何仅搜索html选择字段中的选定选项

时间:2013-01-09 12:52:15

标签: jquery datatables

我在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({})

中的columndef
"aoColumnDefs": [{ "sType": "comments", "aTargets": [ 8 ] }],

它将从搜索中删除完整的选择元素文本(已选中和未选中)。然后我将使用jquery将选定的选项添加到select之外的隐藏div中,以便在搜索中使用它们。 但这仍然是在考虑选择字段文本。

有什么想法吗?如果有人可以提供帮助,请告诉我。

1 个答案:

答案 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:我认为这是最好的方法,但绝对有效