2012-04-02 35 views
0

在将数据添加到数据表之前,我将字符串的长度缩短为20个字符 - http://www.datatables.net/。当我搜索数据表时(通过在搜索框中输入)截断的数据不再可搜索。是否可以将截断的数据添加到数据表而不会导致数据表在搜索时忽略截断的文本。搜索时被忽略的文本 - 数据表

这是使用将数据添加到数据表的代码IM:

if(data.length > 20){ 
data= data.substring(0 , 20); 
} 
$('#myTable').dataTable().fnAddData([ 
data    
] 
); 

问题是,被截断的数据不进行搜索。

+0

需要一些澄清。这是什么意思? - “当我搜索数据表时,截断的数据不再可搜索”。另外什么库是'dataTable()'的一部分? – Terry 2012-04-02 20:54:25

+0

@TerryR我已经更新了这个问题。 – 2012-04-02 21:10:28

+0

Hiya @ user470184我可能会为您解决问题;如果我错了,请纠正我,但您希望列仅显示部分文本,但要在数据表中搜索列中的隐藏文本? :)我有一个示例Jsfiddle所有设置为您的需要,如果多数民众赞成你想要什么,(ü - 显然使用数据表):)有一个很好的,欢呼! – 2012-04-02 21:13:05

回答

2

你好工作演示http://jsfiddle.net/Gnazp/5/

搜索foobar1或foobar2等,这是隐藏在表显示屏上,但它们是您可以在代码的jsfiddle看到列的一部分。

您可以阅读代码中的注释,但实际上代码所做的诀窍是首先将数据与筛选器绑定,以便筛选器具有关于整个文本的信息,然后截断字符串,因此它显示为ou希望它出现:(如果你将过滤前截断字符串将忘记你的子字符串中获得的数据,希望示例代码将在jsfiddle中更好地扩展)

注意:请让我知道我可以复制粘贴所有的代码在我的文章。

说明

在这种情况下

<td class="truncatethis">test yes you can, foobar foonewbar.</td> 

仅显示:test yes y的数据表屏幕上,但如果搜索foobar它会给你正确的结果。

要显示截断屏幕,我已经叫子方法过滤器被调用后:在那的jsfiddle底部查找代码:

$(".truncatethis").each(function(){ 

    if($(this).text().length > 10){ 
       //alert($(this).html()); 
       $(this).html($(this).text().substring(0 , 10)); 
     } 

});​ 

希望这有助于,干杯!