1

multi select field我在 jquery 数据表(http://datatables.net )的一列中有一个 html ,我想搜索(从其默认搜索框)只在选择字段中选择选项而不是未选择的选项。它目前正在搜索选择字段内的所有文本。

我需要的是从搜索中删除未选择的选项。

谁能建议怎么做?
谢谢。

编辑:我已经创建了自定义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 以让它们在搜索中可用。但这仍在考虑在搜索中选择字段文本。

有任何想法吗?请让我知道是否有人可以提供帮助。

4

1 回答 1

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:我不确定这是最好的方法,但它肯定有效

于 2013-01-09T13:27:25.550 回答