0

I am using datatables with some regex filtering. All is working as expected apart from one minor thing.

When I search for a term, the table is filtered successfully. However whenever I click anywhere away from the search box, there is a \b prepended to the search term.

For example, search for Lon, the click off the search input. You will see that this then changes to \bLon.

I'm not sure why this is hapenning. Perhaps somebody could have a look at my code so far and spot something I am (obviously) missing!

Jsfiddle here.

My code so far;

    // DataTable
    var table = $('#example').DataTable();

    $('.dataTables_filter input').unbind().bind('keyup change', function(e) {
      var searchTerm = this.value.toLowerCase(),
        regex = '\\b' + searchTerm + '';
      table.rows().search(regex, true, false).draw();
    });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdn.datatables.net/1.10.9/js/jquery.dataTables.js"></script>
<link href="https://cdn.datatables.net/1.10.0/css/jquery.dataTables.css" rel="stylesheet"/>


<table id="example" class="display" cellspacing="0" width="100%">
  <thead>
    <tr>
      <th>Name</th>
      <th>Position</th>
      <th>Office</th>
      <th>Age</th>
      <th>Start date</th>
      <th>Salary</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>Tiger Nixon</td>
      <td>System Architect</td>
      <td>Edinburgh</td>
      <td>61</td>
      <td>2011/04/25</td>
      <td>$3,120</td>
    </tr>
    <tr>
      <td>Garrett Winters</td>
      <td>Director</td>
      <td>Edinburgh</td>
      <td>63</td>
      <td>2011/07/25</td>
      <td>$5,300</td>
    </tr>
    <tr>
      <td>Ashton Cox</td>
      <td>Technical Author</td>
      <td>San Francisco</td>
      <td>66</td>
      <td>2009/01/12</td>
      <td>$4,800</td>
    </tr>
    <tr>
      <td>Cedric Kelly</td>
      <td>Javascript Developer</td>
      <td>Edinburgh</td>
      <td>22</td>
      <td>2012/03/29</td>
      <td>$3,600</td>
    </tr>
    <tr>
      <td>Jenna Elliott</td>
      <td>Financial Controller</td>
      <td>Edinburgh</td>
      <td>33</td>
      <td>2008/11/28</td>
      <td>$5,300</td>
    </tr>
    <tr>
      <td>Brielle Williamson</td>
      <td>Integration Specialist</td>
      <td>New York</td>
      <td>61</td>
      <td>2012/12/02</td>
      <td>$4,525</td>
    </tr>
    <tr>
      <td>Herrod Chandler</td>
      <td>Sales Assistant</td>
      <td>San Francisco</td>
      <td>59</td>
      <td>2012/08/06</td>
      <td>$4,080</td>
    </tr>
    <tr>
      <td>Rhona Davidson</td>
      <td>Integration Specialist</td>
      <td>Edinburgh</td>
      <td>55</td>
      <td>2010/10/14</td>
      <td>$6,730</td>
    </tr>
    <tr>
      <td>Colleen Hurst</td>
      <td>Javascript Developer</td>
      <td>San Francisco</td>
      <td>39</td>
      <td>2009/09/15</td>
      <td>$5,000</td>
    </tr>
    <tr>
      <td>Sonya Frost</td>
      <td>Software Engineer</td>
      <td>Edinburgh</td>
      <td>23</td>
      <td>2008/12/13</td>
      <td>$3,600</td>
    </tr>
    <tr>
      <td>Jena Gaines</td>
      <td>System Architect</td>
      <td>London</td>
      <td>30</td>
      <td>2008/12/19</td>
      <td>$5,000</td>
    </tr>
    <tr>
      <td>Quinn Flynn</td>
      <td>Financial Controller</td>
      <td>Edinburgh</td>
      <td>22</td>
      <td>2013/03/03</td>
      <td>$4,200</td>
    </tr>
    <tr>
      <td>Charde Marshall</td>
      <td>Regional Director</td>
      <td>San Francisco</td>
      <td>36</td>
      <td>2008/10/16</td>
      <td>$5,300</td>
    </tr>
    <tr>
      <td>Haley Kennedy</td>
      <td>Senior Marketing Designer</td>
      <td>London</td>
      <td>43</td>
      <td>2012/12/18</td>
      <td>$4,800</td>
    </tr>
    <tr>
      <td>Tatyana Fitzpatrick</td>
      <td>Regional Director</td>
      <td>London</td>
      <td>19</td>
      <td>2010/03/17</td>
      <td>$2,875</td>
    </tr>
    <tr>
      <td>Michael Silva</td>
      <td>Senior Marketing Designer</td>
      <td>London</td>
      <td>66</td>
      <td>2012/11/27</td>
      <td>$3,750</td>
    </tr>
    <tr>
      <td>Paul Byrd</td>
      <td>Javascript Developer</td>
      <td>New York</td>
      <td>64</td>
      <td>2010/06/09</td>
      <td>$5,000</td>
    </tr>
    <tr>
      <td>Gloria Little</td>
      <td>Systems Administrator</td>
      <td>New York</td>
      <td>59</td>
      <td>2009/04/10</td>
      <td>$3,120</td>
    </tr>
    <tr>
      <td>Bradley Greer</td>
      <td>Software Engineer</td>
      <td>London</td>
      <td>41</td>
      <td>2012/10/13</td>
      <td>$3,120</td>
    </tr>
    <tr>
      <td>Dai Rios</td>
      <td>System Architect</td>
      <td>Edinburgh</td>
      <td>35</td>
      <td>2012/09/26</td>
      <td>$4,200</td>
    </tr>
    <tr>
      <td>Jenette Caldwell</td>
      <td>Financial Controller</td>
      <td>New York</td>
      <td>30</td>
      <td>2011/09/03</td>
      <td>$4,965</td>
    </tr>
    <tr>
      <td>Yuri Berry</td>
      <td>System Architect</td>
      <td>New York</td>
      <td>40</td>
      <td>2009/06/25</td>
      <td>$3,600</td>
    </tr>
    <tr>
      <td>Caesar Vance</td>
      <td>Technical Author</td>
      <td>New York</td>
      <td>21</td>
      <td>2011/12/12</td>
      <td>$4,965</td>
    </tr>
    <tr>
      <td>Doris Wilder</td>
      <td>Sales Assistant</td>
      <td>Edinburgh</td>
      <td>23</td>
      <td>2010/09/20</td>
      <td>$4,965</td>
    </tr>
    <tr>
      <td>Angelica Ramos</td>
      <td>System Architect</td>
      <td>London</td>
      <td>36</td>
      <td>2009/10/09</td>
      <td>$2,875</td>
    </tr>
    <tr>
      <td>Gavin Joyce</td>
      <td>Developer</td>
      <td>Edinburgh</td>
      <td>42</td>
      <td>2010/12/22</td>
      <td>$4,525</td>
    </tr>
    <tr>
      <td>Jennifer Chang</td>
      <td>Regional Director</td>
      <td>London</td>
      <td>28</td>
      <td>2010/11/14</td>
      <td>$4,080</td>
    </tr>
    <tr>
      <td>Brenden Wagner</td>
      <td>Software Engineer</td>
      <td>San Francisco</td>
      <td>18</td>
      <td>2011/06/07</td>
      <td>$3,750</td>
    </tr>
    <tr>
      <td>Ebony Grimes</td>
      <td>Software Engineer</td>
      <td>San Francisco</td>
      <td>48</td>
      <td>2010/03/11</td>
      <td>$2,875</td>
    </tr>
    <tr>
      <td>Russell Chavez</td>
      <td>Director</td>
      <td>Edinburgh</td>
      <td>20</td>
      <td>2011/08/14</td>
      <td>$3,600</td>
    </tr>
    <tr>
      <td>Michelle House</td>
      <td>Integration Specialist</td>
      <td>Edinburgh</td>
      <td>37</td>
      <td>2011/06/02</td>
      <td>$3,750</td>
    </tr>
    <tr>
      <td>Suki Burks</td>
      <td>Developer</td>
      <td>London</td>
      <td>53</td>
      <td>2009/10/22</td>
      <td>$2,875</td>
    </tr>
    <tr>
      <td>Prescott Bartlett</td>
      <td>Technical Author</td>
      <td>London</td>
      <td>27</td>
      <td>2011/05/07</td>
      <td>$6,730</td>
    </tr>
    <tr>
      <td>Gavin Cortez</td>
      <td>Technical Author</td>
      <td>San Francisco</td>
      <td>22</td>
      <td>2008/10/26</td>
      <td>$6,730</td>
    </tr>
    <tr>
      <td>Martena Mccray</td>
      <td>Integration Specialist</td>
      <td>Edinburgh</td>
      <td>46</td>
      <td>2011/03/09</td>
      <td>$4,080</td>
    </tr>
    <tr>
      <td>Unity Butler</td>
      <td>Senior Marketing Designer</td>
      <td>San Francisco</td>
      <td>47</td>
      <td>2009/12/09</td>
      <td>$3,750</td>
    </tr>
    <tr>
      <td>Howard Hatfield</td>
      <td>Financial Controller</td>
      <td>San Francisco</td>
      <td>51</td>
      <td>2008/12/16</td>
      <td>$4,080</td>
    </tr>
    <tr>
      <td>Hope Fuentes</td>
      <td>Financial Controller</td>
      <td>San Francisco</td>
      <td>41</td>
      <td>2010/02/12</td>
      <td>$4,200</td>
    </tr>
    <tr>
      <td>Vivian Harrell</td>
      <td>System Architect</td>
      <td>San Francisco</td>
      <td>62</td>
      <td>2009/02/14</td>
      <td>$4,965</td>
    </tr>
    <tr>
      <td>Timothy Mooney</td>
      <td>Financial Controller</td>
      <td>London</td>
      <td>37</td>
      <td>2008/12/11</td>
      <td>$4,200</td>
    </tr>
    <tr>
      <td>Jackson Bradshaw</td>
      <td>Director</td>
      <td>New York</td>
      <td>65</td>
      <td>2008/09/26</td>
      <td>$5,000</td>
    </tr>
    <tr>
      <td>Miriam Weiss</td>
      <td>Support Engineer</td>
      <td>Edinburgh</td>
      <td>64</td>
      <td>2011/02/03</td>
      <td>$4,965</td>
    </tr>
    <tr>
      <td>Bruno Nash</td>
      <td>Software Engineer</td>
      <td>London</td>
      <td>38</td>
      <td>2011/05/03</td>
      <td>$4,200</td>
    </tr>
    <tr>
      <td>Odessa Jackson</td>
      <td>Support Engineer</td>
      <td>Edinburgh</td>
      <td>37</td>
      <td>2009/08/19</td>
      <td>$3,600</td>
    </tr>
    <tr>
      <td>Thor Walton</td>
      <td>Developer</td>
      <td>New York</td>
      <td>61</td>
      <td>2013/08/11</td>
      <td>$3,600</td>
    </tr>
    <tr>
      <td>Finn Camacho</td>
      <td>Support Engineer</td>
      <td>San Francisco</td>
      <td>47</td>
      <td>2009/07/07</td>
      <td>$4,800</td>
    </tr>
    <tr>
      <td>Elton Baldwin</td>
      <td>Data Coordinator</td>
      <td>Edinburgh</td>
      <td>64</td>
      <td>2012/04/09</td>
      <td>$6,730</td>
    </tr>
    <tr>
      <td>Zenaida Frank</td>
      <td>Software Engineer</td>
      <td>New York</td>
      <td>63</td>
      <td>2010/01/04</td>
      <td>$4,800</td>
    </tr>
    <tr>
      <td>Zorita Serrano</td>
      <td>Software Engineer</td>
      <td>San Francisco</td>
      <td>56</td>
      <td>2012/06/01</td>
      <td>$5,300</td>
    </tr>
    <tr>
      <td>Jennifer Acosta</td>
      <td>Javascript Developer</td>
      <td>Edinburgh</td>
      <td>43</td>
      <td>2013/02/01</td>
      <td>$2,875</td>
    </tr>
    <tr>
      <td>Cara Stevens</td>
      <td>Sales Assistant</td>
      <td>New York</td>
      <td>46</td>
      <td>2011/12/06</td>
      <td>$4,800</td>
    </tr>
    <tr>
      <td>Hermione Butler</td>
      <td>Director</td>
      <td>London</td>
      <td>47</td>
      <td>2011/03/21</td>
      <td>$4,080</td>
    </tr>
    <tr>
      <td>Lael Greer</td>
      <td>Systems Administrator</td>
      <td>London</td>
      <td>21</td>
      <td>2009/02/27</td>
      <td>$3,120</td>
    </tr>
    <tr>
      <td>Jonas Alexander</td>
      <td>Developer</td>
      <td>San Francisco</td>
      <td>30</td>
      <td>2010/07/14</td>
      <td>$5,300</td>
    </tr>
    <tr>
      <td>Shad Decker</td>
      <td>Regional Director</td>
      <td>Edinburgh</td>
      <td>51</td>
      <td>2008/11/13</td>
      <td>$5,300</td>
    </tr>
    <tr>
      <td>Michael Bruce</td>
      <td>Javascript Developer</td>
      <td>Edinburgh</td>
      <td>29</td>
      <td>2011/06/27</td>
      <td>$4,080</td>
    </tr>
    <tr>
      <td>Donna Snider</td>
      <td>System Architect</td>
      <td>New York</td>
      <td>27</td>
      <td>2011/01/25</td>
      <td>$3,120</td>
    </tr>
  </tbody>
</table>
jonboy
  • 2,729
  • 6
  • 37
  • 77
  • Removing `change` from the event list seems to help. Also, `$('#example').on( 'keyup change', function () {` seems to work. – Wiktor Stribiżew Feb 08 '16 at 10:56
  • Dude, you are concatenating that string regex = '\\b' + searchTerm + ''; – Punit Gajjar Feb 08 '16 at 10:57
  • @WiktorStribiżew was that the issue? So simple! Feel silly now :/ Will this have any adverse effect on the functionality? – jonboy Feb 08 '16 at 11:15
  • @PunitGajjar I'm not really sure what you mean or how that will help me answer the question. Thanks though. If you could elaborate that would be great :) – jonboy Feb 08 '16 at 11:16
  • You _could_ go back to a custom filter solution; You can do regex search with word boundaries in custom filter functions as well, and custom filtering does not insists on updating the content of the filter box. – davidkonrad Feb 08 '16 at 14:35

1 Answers1

1

You are using regex = '\\b' + searchTerm + ''; ( May be for removing blank spaces) Please remove it just use regex = searchTerm; we can able to search records.

Tushar Gupta
  • 15,504
  • 1
  • 29
  • 47
  • Thanks for this. I do however need to use `'\\b' + searchTerm + '';` as it's the only way my search will perform correctly. If I remove `change` from `$('.dataTables_filter input').unbind().bind('keyup change', function(e) {` it seems to do what I want :) – jonboy Feb 08 '16 at 12:33