2016-12-02 59 views
1

我想在列的型號「搜索和「內部參考」用一個搜索欄,並在列另一個搜索欄名爲「說明」:jQuery的數據表自定義搜索欄

enter image description here

通過的那一刻,我這個在HTML嘗試:

... 
<th class="code">Part Number</th> 
<th class="keyword">Description</th> 
<th class="code">Internal Reference</th> 
... 

這在.js文件:

$('#keyword-search').keyup(function() { 
    var val = $.trim($(this).val()).replace(/ +/g, ' ').toLowerCase(); 
    oTable.columns('.keyword').search('^' + val, true, false).draw(); 
}); 

$('#code-search').keyup(function() { 
    var val = $.trim($(this).val()).replace(/ +/g, ' ').toLowerCase(); 
    oTable.columns('.code').search('^' + val, true, false).draw(); 
}); 

我希望能夠在「零件號」或「參考」列中進行搜索,但不能同時在兩者中進行搜索,只是爲了顯示錶達式在第一列或第二列中存在的列。

我需要這個來解決,我嘗試了不同的方法,我沒有找到解決方案。

編輯1:我想這樣的最終結果:

enter image description here

但是,搜索不工作,還沒有最終過濾結果,有兩列之間的衝突,因爲它是在「零件號」欄和「內部參考」欄中同時搜索'NUM1'。我的意思是,它正在執行搜索代碼而不是搜索,這是我想要的。

+0

可以爲用戶提供實際數據與兩個搜索酒吧工作的例子嗎?這樣做會更容易。 – Dekel

+0

看到這個[thread](http://stackoverflow.com/a/33802340/7224597) – philantrovert

回答

1

沿此線的東西應該工作:

$('#keyword-search').keyup(function() { 
     var searchText = $(this).val().toLowerCase(); 
     $.fn.dataTable.ext.search.push(function(settings, data, dataIndex) { 
     //Assuming part number and internal reference are 1st and 3rd columns 
     if((~data[0].toLowerCase().indexOf(searchText)) || (~data[2].toLowerCase().indexOf(searchText))) { 
      return true; 
     } 
     return false; 
    } 

檢查thisthis

+0

完美這是我想要的,現在唯一的問題是,它應該顯示代碼_startsWith_欄中的內容所在的行,但我認爲這是一個小問題。謝謝! –

+0

是的,'caret(^)'應該爲你做。樂於幫助。 – philantrovert

+1

我最終使用了'data [0] .toLowerCase()。indexOf(val)=== 0'而不是'〜data [0] .toLowerCase()。indexOf(val)'。以防萬一有人需要它。 –