0

I have set up a searchable table using dataTables and it works perfectly, accept one column isn't filtering in the search box.

Here is my JSFiddle

The column I am struggling with is the "Analog Channels" column, so for example if I type in "digital" into the search box, it will filter all of the digital results. However if I type in "analog" it does not register it at all.

Heres my table

    <table cellspacing="0" cellpadding="4" id="table_id" class="scope-table">
<thead class="header">
  <tr>
    <th>Oscilloscope</th>
    <th>Bandwidth (MHz)</th>
    <th>Analog Channels</th>
    <th>Digital Channels</th>
    <th>List Price</th>
    <th>Sale Price</th>
  </tr>
</thead>
<tbody>
  <tr class="js-clickableRow" data-url="http://www.sjelectronics.co.uk/acatalog/Tektronix-TBS1064.html">
    <td><a href="http://www.sjelectronics.co.uk/acatalog/Tektronix-TBS1064.html">TBS1064</a></td>
    <td>60</td>
    <td>4 analog</td>
    <td>0</td>
    <td>£653.00</td>
    <td>£555.05</td>       
  </tr>
  <tr class="js-clickableRow" data-url="http://www.sjelectronics.co.uk/acatalog/copy_of_Tektronix_TBS1052B.html">
    <td><a href="http://www.sjelectronics.co.uk/acatalog/copy_of_Tektronix_TBS1052B.html">TBS1072B</a></td>
    <td>70</td>
    <td>2 analog</td>
    <td>0</td>
    <td>£587.00</td>
    <td>£498.95</td>       
  </tr>
  <tr class="js-clickableRow" data-url="http://www.sjelectronics.co.uk/acatalog/copy_of_Tektronix_TBS1052-EDU.html">
    <td><a href="http://www.sjelectronics.co.uk/acatalog/copy_of_Tektronix_TBS1052-EDU.html">TBS1072B-EDU</a></td>
    <td>70</td>
    <td>2 analog</td>
    <td>0</td>
    <td>£521.00</td>
    <td>£442.85</td>
  </tr>
  <tr class="js-clickableRow" data-url="http://www.sjelectronics.co.uk/acatalog/TBS1102B.html">
    <td><a href="http://www.sjelectronics.co.uk/acatalog/TBS1102B.html">TBS1102B</a></td>
    <td>100</td>
    <td>2 analog</td>
    <td>0</td>
    <td>£785.00</td>
    <td>£667.25</td>       
  </tr>
  <tr class="js-clickableRow" data-url="http://www.sjelectronics.co.uk/acatalog/copy_of_copy_of_Tektronix_TBS1052-EDU.html">
    <td><a href="http://www.sjelectronics.co.uk/acatalog/copy_of_copy_of_Tektronix_TBS1052-EDU.html">TBS1102B-EDU</a></td>
    <td>100</td>
    <td>2 analog</td>
    <td>0</td>
    <td>£719.00</td>
    <td>£611.15</td>
  </tr>
  <tr class="js-clickableRow" data-url="http://www.sjelectronics.co.uk/acatalog/Tektronix-TBS1104.html">
    <td><a href="http://www.sjelectronics.co.uk/acatalog/Tektronix-TBS1104.html">TBS1104</a></td>
    <td>100</td>
    <td>4 analog</td>
    <td>0</td>
    <td>£983.00</td>
    <td>£835.55</td>
  </tr>
  <tr class="js-clickableRow" data-url="http://www.sjelectronics.co.uk/acatalog/Tektronix_TBS1152B.html">
    <td><a href="http://www.sjelectronics.co.uk/acatalog/Tektronix_TBS1152B.html">TBS1152B</a></td>
    <td>150</td>
    <td>2 analog</td>
    <td>0</td>
    <td>£983.00</td>
    <td>£835.55</td>       
  </tr>
  <tr class="js-clickableRow" data-url="http://www.sjelectronics.co.uk/acatalog/Tektronix_MDO3032.html">
    <td><a href="http://www.sjelectronics.co.uk/acatalog/copy_of_copy_of_copy_of_Tektronix_TBS1052-EDU.html">TBS1152B-EDU</a></td>
    <td>150</td>
    <td>2 analog</td>
    <td>0</td>
    <td>£917.00</td>
    <td>£779.45</td>
  </tr>
  <tr class="js-clickableRow" data-url="http://www.sjelectronics.co.uk/acatalog/Tektronix-TBS1154.html">
    <td><a href="http://www.sjelectronics.co.uk/acatalog/Tektronix-TBS1154.html">TBS1154</a></td>
    <td>150</td>
    <td>4 analog</td>
    <td>0</td>
    <td>£1,180.00</td>
    <td>£1,003.00</td>
  </tr>
  <tr class="js-clickableRow" data-url="http://www.sjelectronics.co.uk/acatalog/Tektronix_TBS1202B.html">
    <td><a href="http://www.sjelectronics.co.uk/acatalog/Tektronix_TBS1202B.html">TBS1202B</a></td>
    <td>200</td>
    <td>2 analog</td>
    <td>0</td>
    <td>£1,180.00</td>
    <td>£1,003.00</td>       
  </tr>
  <tr class="js-clickableRow" data-url="http://www.sjelectronics.co.uk/acatalog/copy_of_copy_of_copy_of_copy_of_Tektronix_TBS1052-EDU.html">
    <td><a href="http://www.sjelectronics.co.uk/acatalog/copy_of_copy_of_copy_of_copy_of_Tektronix_TBS1052-EDU.html">TBS1202B-EDU</a></td>
    <td>200</td>
    <td>2 analog</td>
    <td>0</td>
    <td>£1,110.00</td>
    <td>£943.50</td>
  </tr>
  <tr class="js-clickableRow" data-url="http://www.sjelectronics.co.uk/acatalog/Tektronix_DPO2002B.html">
    <td><a href="http://www.sjelectronics.co.uk/acatalog/Tektronix_DPO2002B.html">DPO2002B</a></td>
    <td>70</td>
    <td>2 analog</td>
    <td>0</td>
    <td>£866.00</td>
    <td>£736.10</td>       
  </tr>
  <tr class="js-clickableRow" data-url="http://www.sjelectronics.co.uk/acatalog/Tektronix_DPO2004B.html">
    <td><a href="http://www.sjelectronics.co.uk/acatalog/Tektronix_DPO2004B.html">DPO2004B</a></td>
    <td>70</td>
    <td>4 analog</td>
    <td>0</td>
    <td>£1,350.00</td>
    <td>£1,147.50</td>
  </tr>
  <tr class="js-clickableRow" data-url="http://www.sjelectronics.co.uk/acatalog/DPO2012.html">
    <td><a href="http://www.sjelectronics.co.uk/acatalog/DPO2012.html">DPO2012B</a></td>
    <td>100</td>
    <td>2 analog</td>
    <td>0</td>
    <td>£1,110.00</td>
    <td>£943.50</td>       
  </tr>
  <tr class="js-clickableRow" data-url="http://www.sjelectronics.co.uk/acatalog/DPO2014.html">
    <td><a href="http://www.sjelectronics.co.uk/acatalog/DPO2014.html">DPO2014B</a></td>
    <td>100</td>
    <td>4 analog</td>
    <td>0</td>
    <td>£1,600.00</td>
    <td>£1,360.00</td>
  </tr>
  <tr class="js-clickableRow" data-url="http://www.sjelectronics.co.uk/acatalog/Tektronix_DPO2022B.html">
    <td><a href="http://www.sjelectronics.co.uk/acatalog/Tektronix_DPO2022B.html">DPO2022B</a></td>
    <td>200</td>
    <td>2 analog</td>
    <td>0</td>
    <td>£1,560.00</td>
    <td>£1,326.00</td>       
  </tr>
  <tr class="js-clickableRow" data-url="http://www.sjelectronics.co.uk/acatalog/DPO2024.html">
    <td><a href="http://www.sjelectronics.co.uk/acatalog/DPO2024.html">DPO2024B</a></td>
    <td>200</td>
    <td>4 analog</td>
    <td>0</td>
    <td>£1,930.00</td>
    <td>£1,640.50</td>
  </tr>
  <tr class="js-clickableRow" data-url="http://www.sjelectronics.co.uk/acatalog/Tektronix_MSO2002B.html">
    <td><a href="http://www.sjelectronics.co.uk/acatalog/Tektronix_MSO2002B.html">MSO2002B</a></td>
    <td>70</td>
    <td>2 analog</td>
    <td>16 digital</td>
    <td>£1,500.00</td>
    <td>£1,275.00</td>       
  </tr>
  <tr class="js-clickableRow" data-url="http://www.sjelectronics.co.uk/acatalog/Tektronix_MSO2004B.html">
    <td><a href="http://www.sjelectronics.co.uk/acatalog/Tektronix_MSO2004B.html">MSO2004B</a></td>
    <td>70</td>
    <td>4 analog</td>
    <td>16 digital</td>
    <td>£1,960.00</td>
    <td>£1,666.00</td>
  </tr>
  <tr class="js-clickableRow" data-url="http://www.sjelectronics.co.uk/acatalog/MSO2012.html">
    <td><a href="http://www.sjelectronics.co.uk/acatalog/MSO2012.html">MSO2012B</a></td>
    <td>100</td>
    <td>2 analog</td>
    <td>16 digital</td>
    <td>£1,720.00</td>
    <td>£1,462.00</td>       
  </tr>
  <tr class="js-clickableRow" data-url="http://www.sjelectronics.co.uk/acatalog/MSO2014.html">
    <td><a href="http://www.sjelectronics.co.uk/acatalog/MSO2014.html">MS02014B</a></td>
    <td>100</td>
    <td>4 analog</td>
    <td>16 digital</td>
    <td>£2,220.00</td>
    <td>£1,887.00</td>
  </tr>
  <tr class="js-clickableRow" data-url="http://www.sjelectronics.co.uk/acatalog/Tektronix_MSO2022B.html">
    <td><a href="http://www.sjelectronics.co.uk/acatalog/Tektronix_MSO2022B.html">MS02022B</a></td>
    <td>200</td>
    <td>2 analog</td>
    <td>16 digital</td>
    <td>£2,190.00</td>
    <td>£1,861.50</td>       
  </tr>
  <tr class="js-clickableRow" data-url="http://www.sjelectronics.co.uk/acatalog/MSO2024.html">
    <td><a href="http://www.sjelectronics.co.uk/acatalog/MSO2024.html">MS02024B</a></td>
    <td>200</td>
    <td>4 analog</td>
    <td>16 digital</td>
    <td>£2,550.00</td>
    <td>£2,167.50</td>
  </tr>
</tbody>
</table>

I am missing something ? I am supposed to initialize the number of fields the table searches ? Could someone point out where I am going wrong please ? many thanks.

Lumi Lu
  • 3,289
  • 1
  • 11
  • 21
JamesP
  • 67
  • 1
  • 6

2 Answers2

1

I have to admit that this behavior baffled me too for a moment.

But after looking at your fiddle I found that you have the word analog in every one of your rows.

Hence: No Filtering since all of the rows pass the filter.

Try to set one of the datasets to something completely different (that does not include the word analog) like:

  <tr class="js-clickableRow" data-url="http://www.sjelectronics.co.uk/acatalog/copy_of_Tektronix_TBS1052B.html">
    <td><a href="http://www.sjelectronics.co.uk/acatalog/copy_of_Tektronix_TBS1052B.html">TBS1072B</a></td>
    <td>70</td>
    <td>2 canonical</td>
    <td>0</td>
    <td>£587.00</td>
    <td>£498.95</td>       
  </tr>

Now enter ana in the search field.

A soon as you enter the last a the grid begins filtering. Thats because an exists in both analog and canonical.

mainguy
  • 8,283
  • 2
  • 31
  • 40
  • Thank you for your response, I changed "2 analog" to "2-analog" across all of the fields and it works now, so thank you very much – JamesP Nov 04 '14 at 13:24
0

The real answer to the question is: Everything is working correctly.

As has been stated, every row contains the word "analog" which is why filtering "analog" does not appear to be working.


My original understanding of the problem was that the Analog Channels column was not working as intended, i.e. searching for

2 analog

would not filter out things like 4 analog. The solution to that problem is to put quotes around the search term in the search box like this

"2 analog"

otherwise, DataTables will look for every row containing either 2 or analog.

White
  • 34
  • 4
  • Nah, I don't think that's the issue here. The filter is working well: It filters all rows with the word ANALOG in them, which are in fact all rows. I think what JamesP want's to do is filter all rows that don't have the word DIGITAL in them and return all the analog-only receivers. – mainguy Nov 04 '14 at 13:28
  • I thought the problem was that the Analog channels column was not appearing to be filtered like the rest. The reason being that filtering "2 analog" without the quotes is likely searching for two values instead of one. – White Nov 04 '14 at 13:32
  • Searching for: 2 analog, looks for every column that contains either 2 or analog, and since analog is in every row, it doesnt make a difference Searching for: "2 analog", looks for exactly this string – White Nov 04 '14 at 13:37
  • Yep, but in his question he asked for "analog". But in general you are completely right. – mainguy Nov 04 '14 at 14:00