title: jQuery DataTables Filtering for Specific Columns Only
body: <p>I am using the jQuery plugin DataTables (<a href="http://datatables.net" rel="noreferrer">http://datatables.net</a>) for pagination, search capabilities and filtering.  </p>
  
  <p>There is a filter function (<a href="http://datatables.net/release-datatables/examples/api/multi_filter_select.html" rel="noreferrer">http://datatables.net/release-datatables/examples/api/multi_filter_select.html</a>) that places form select elements for each column.  </p>
  
  <p>My issue is that I don't want the filter select elements for every column, only some.  I've modified the original code as I want Yes/No filtering only, and my first column contains user names.  </p>
  
  <p>How do I remove the form select element from the first column?</p>
  
  <p>JavaScript:</p>
  
  <pre><code>&lt;script type="text/javascript"&gt;
  
  $(document).ready(function() {
  
  (function($) {
  /*
   * Function: fnGetColumnData
   * Purpose:  Return an array of table values from a particular column.
   * Returns:  array string: 1d data array
   * Inputs:   object:oSettings - dataTable settings object. This is always the last argument past to the function
   *           int:iColumn - the id of the column to extract the data from
   *           bool:bUnique - optional - if set to false duplicated values are not filtered out
   *           bool:bFiltered - optional - if set to false all the table data is used (not only the filtered)
   *           bool:bIgnoreEmpty - optional - if set to false empty values are not filtered from the result array
   * Author:   Benedikt Forchhammer &lt;b.forchhammer /AT\ mind2.de&gt;
   */
  $.fn.dataTableExt.oApi.fnGetColumnData = function ( oSettings, iColumn, bUnique, bFiltered, bIgnoreEmpty ) {
      // check that we have a column id
      if ( typeof iColumn == "undefined" ) return new Array();
  
      // by default we only want unique data
      if ( typeof bUnique == "undefined" ) bUnique = true;
  
      // by default we do want to only look at filtered data
      if ( typeof bFiltered == "undefined" ) bFiltered = true;
  
      // by default we do not wany to include empty values
      if ( typeof bIgnoreEmpty == "undefined" ) bIgnoreEmpty = true;
  
      // list of rows which we're going to loop through
      var aiRows;
  
      // use only filtered rows
      if (bFiltered == true) aiRows = oSettings.aiDisplay;
      // use all rows
      else aiRows = oSettings.aiDisplayMaster; // all row numbers
  
      // set up data array   
      var asResultData = new Array();
  
      for (var i=0,c=aiRows.length; i&lt;c; i++) {
          iRow = aiRows[i];
          var aData = this.fnGetData(iRow);
          var sValue = aData[iColumn];
  
          // ignore empty values?
          if (bIgnoreEmpty == true &amp;&amp; sValue.length == 0) continue;
  
          // ignore unique values?
          else if (bUnique == true &amp;&amp; jQuery.inArray(sValue, asResultData) &gt; -1) continue;
  
          // else push the value onto the result data array
          else asResultData.push(sValue);
      }
  
      return asResultData;
  }}(jQuery));
  
  
  function fnCreateSelect( aData )
  {
      return '&lt;select&gt;&lt;option value=""&gt;Select&lt;/option&gt;&lt;option value="Yes"&gt;Yes&lt;/option&gt;&lt;option value="No"&gt;No&lt;/option&gt;&lt;/select&gt;';
  }
  
     var oTable = $('#results').dataTable({
           "sDom": '&lt;&lt;"filters"f&gt;&lt;"clear"&gt;&lt;"top"Tp&gt;&lt;"clear"&gt;rt&lt;"bottom"il&gt;&gt;',
           "iDisplayLength": 5,
           "sPaginationType": "full_numbers",
           "bSortCellsTop": true,
           "oLanguage": {
                      "sSearch": "Search all columns:"
            },
           "aoColumns": [
                  null,
                  { "sType": "title-string" },
                  { "sType": "title-string" },
                  { "sType": "title-string" },
                  { "sType": "title-string" }
              ],
          "oTableTools": {
              "sSwfPath": "../../scripts/TableTools/copy_cvs_xls_pdf.swf" 
          }         
      });  
  
  
   /* Add a select menu for each TH element in the table footer */
      $("thead #filter td").each( function ( i ) {
          this.innerHTML = fnCreateSelect( oTable.fnGetColumnData(i) );
          $('select', this).change( function () {
              oTable.fnFilter( $(this).val(), i );
          } );
      } );    
  } );
  &lt;/script&gt;
  </code></pre>
  
  <p>HTML:</p>
  
  <pre><code>&lt;table id="results" class="display"&gt;
      &lt;thead&gt;
          &lt;tr id="labels"&gt;
              &lt;th&gt;1&lt;/th&gt;
              &lt;th&gt;2&lt;/th&gt;
              &lt;th&gt;3&lt;/th&gt;
              &lt;th&gt;4&lt;/th&gt;
              &lt;th&gt;5?&lt;/th&gt;
          &lt;/tr&gt;
          &lt;tr id="filter"&gt;
              &lt;td&gt;1&lt;/td&gt;
              &lt;td&gt;2&lt;/td&gt;
              &lt;td&gt;3&lt;/td&gt;
              &lt;td&gt;4&lt;/td&gt;
              &lt;td&gt;5?&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
      ...
      &lt;/tbody&gt;
  &lt;/table&gt;
  </code></pre>