 #  JavaScript Filter Table Documentation 

 

- Extension Page: [JavaScript Filter Table](/software/javascript/javascript-filter-table)

FilterTable introduces my "Stuff I Wrote and Never Released Because I Was Too Busy" series—a JavaScript class designed to turn plain HTML tables into interactive tools. I built this to solve a recurring problem: making table data manageable without fuss. This documentation guides you through setup and usage, using a sample table with five columns: id, last name, first name, gender, and age. Each example highlights a core feature, ending with a full-featured setup.

## What FilterTable Is

FilterTable enhances any HTML table with a header row. It adds text search, enum filters (dropdowns), range filters (for numbers), sortable columns, and pagination. It analyzes your data to apply these features automatically where they fit. English serves as the default language, but translation remains an option. No fluff—just functionality.

### Sample Table

 ```
Here is the table we use for examples:  ```html


```
```

 ```html
<table id="peopleTable">
    <thead>
        <tr>
            <th>ID</th>
            <th>Last Name</th>
            <th>First Name</th>
            <th>Gender</th>
            <th>Age</th>
        </tr>
    </thead>
    <tbody>
        <tr><td>1</td><td>Smith</td><td>John</td><td>Male</td><td>34</td></tr>
        <tr><td>2</td><td>Johnson</td><td>Emily</td><td>Female</td><td>28</td></tr>
        <tr><td>3</td><td>Lee</td><td>Michael</td><td>Male</td><td>45</td></tr>
        <tr><td>4</td><td>Brown</td><td>Sarah</td><td>Female</td><td>31</td></tr>
        <tr><td>5</td><td>Davis</td><td>James</td><td>Male</td><td>39</td></tr>
    </tbody>
</table>

```

## Getting Started

The script has no dependencies, add a &lt;script&gt; tag to your &lt;head&gt; and it's ready to go. Bootstrap 5 and Font Awesome support are baked in, but not required.

## Basic Activation

You could activate FilterTable on your table with no configuration, but it wouldn't do anything. Out of the box, it's not sortable, or filterable. You MUST configure it. Let's start with its namesake function.

### Text Filter

 ```*
const config = {
    filterableColumns: [1, 2] // Last Name, First Name
};
const filterTable = new FilterTable('peopleTable', config);
```

You'll get this result. Type any name, first or last, and the table will render only the matches. Checkboxes indicate which columns are being filtered. Check and uncheck to limit which columns the filter applies to.

 | ID | Last Name | First Name | Gender | Age |
|---|---|---|---|---|
| 1 | Smith | John | Male | 34 |
| 2 | Johnson | Emily | Female | 28 |
| 3 | Lee | Michael | Male | 45 |
| 4 | Brown | Sarah | Female | 31 |
| 5 | Davis | James | Male | 39 |

### Enum Filter

Generate dropdowns for columns with repeating values, like gender.

 ```*
const config = {
    enumColumns: 3 // Gender, in this case - but you can select multiple columns like [1,2,3]
};
const filterTable = new FilterTable('peopleTable', config);
```

A dropdown appears above the table for the Gender column, offering "All," "Male," and "Female." Select "Female" to show only Emily Johnson and Sarah Brown. The values are selected from those found in the table column.

 | ID | Last Name | First Name | Gender | Age |
|---|---|---|---|---|
| 1 | Smith | John | Male | 34 |
| 2 | Johnson | Emily | Female | 28 |
| 3 | Lee | Michael | Male | 45 |
| 4 | Brown | Sarah | Female | 31 |
| 5 | Davis | James | Male | 39 |

### Range Filters

For purely numeric columns, you can set up range filters. As with the enums, the min and max values are selected from the table column itself. Selecting min and max values reduces the table entries to show only those within the range.

 ```*
const config = {
    rangeColumns: {
        4: {} // an empty object picks the available range. defaultMin and defaultMax optional
    }
};
const filterTable = new FilterTable('peopleTable', config);
```

Two numeric filters appear, allowing you to filter by min and max values in the Age column.

 | ID | Last Name | First Name | Gender | Age |
|---|---|---|---|---|
| 1 | Smith | John | Male | 34 |
| 2 | Johnson | Emily | Female | 28 |
| 3 | Lee | Michael | Male | 45 |
| 4 | Brown | Sarah | Female | 31 |
| 5 | Davis | James | Male | 39 |

### Sortable Columns

There's no reason to stop with filters, let's jump into the sort feature. Simple to configure, powerful to behold.

 ```*
const config = {
    sortableColumns: [0,1,2,3,4], // Let's sort by everything
    defaultSortColumn: 0, // ID, this setting is optional - defaults to the default table order
    defaultSortDirection: 'asc' // asc or desc - optional, defaults to asc
};
const filterTable = new FilterTable('peopleTable', config);
```

 | ID | Last Name | First Name | Gender | Age |
|---|---|---|---|---|
| 1 | Smith | John | Male | 34 |
| 2 | Johnson | Emily | Female | 28 |
| 3 | Lee | Michael | Male | 45 |
| 4 | Brown | Sarah | Female | 31 |
| 5 | Davis | James | Male | 39 |

### Pagination

There's nothing worse than a table that never ends, or having to scroll all the way back up from the bottom of a neverending table just to sort!

 ```*
const config = {
    rowsPerPageOptions: [2,4,6], // what pagination options are visible to the user, defaults to [5,10,15]
};
const filterTable = new FilterTable('peopleTable', config);
```

When there aren't enough rows to paginate - no pagination is displayed.

 | ID | Last Name | First Name | Gender | Age |
|---|---|---|---|---|
| 1 | Smith | John | Male | 34 |
| 2 | Johnson | Emily | Female | 28 |
| 3 | Lee | Michael | Male | 45 |
| 4 | Brown | Sarah | Female | 31 |
| 5 | Davis | James | Male | 39 |

## Kitchen Sink Example

All features combined, and a much expanded table (50 entries). I even altered a few of the language strings.

 ```*
const config = {
    filterableColumns: [1, 2],                // Last Name, First Name for text search
    enumColumns: 3,                           // Gender for dropdown
    rangeColumns: {
        4: { defaultMin: 30, defaultMax: 40 } // Age for range filter
    },
    sortableColumns: [0, 1, 2, 3, 4],        // All columns sortable
    defaultSortColumn: 1,                     // Start sorted by Last Name
    defaultSortDirection: 'asc',
    rowsPerPageOptions: [2, 4, 6],            // Pagination options
    language: {
        searchLabel: "Find",
        enumAllOption: "Any",
        paginationNext: "Forward"
    }
};
const filterTable = new FilterTable('peopleTable', config);
```

 | ID | Last Name | First Name | Gender | Age |
|---|---|---|---|---|
| 1 | Smith | John | Male | 34 |
| 2 | Johnson | Emily | Female | 28 |
| 3 | Lee | Michael | Male | 45 |
| 4 | Brown | Sarah | Female | 31 |
| 5 | Davis | James | Male | 39 |
| 6 | Brown | Sarah | Female | 25 |
| 7 | Jones | Michael | Male | 40 |
| 8 | Miller | Jessica | Female | 35 |
| 9 | Davis | Chris | Male | 18 |
| 10 | Garcia | Laura | Female | 22 |
| 11 | Martinez | David | Male | 28 |
| 12 | Hernandez | Anna | Female | 19 |
| 13 | Lopez | Daniel | Male | 33 |
| 14 | Gonzalez | Maria | Female | 27 |
| 15 | Wilson | Paul | Male | 45 |
| 16 | Anderson | Linda | Female | 50 |
| 17 | Thomas | Mark | Male | 60 |
| 18 | Moore | Patricia | Female | 55 |
| 19 | Jackson | Steven | Male | 42 |
| 20 | White | Barbara | Female | 38 |
| 21 | Harris | Kevin | Male | 29 |
| 22 | Martin | Lisa | Female | 24 |
| 23 | Thompson | Brian | Male | 31 |
| 24 | Garcia | Angela | Female | 26 |
| 25 | Martinez | Jason | Male | 34 |
| 26 | Hernandez | Carol | Female | 21 |
| 27 | Lopez | Scott | Male | 37 |
| 28 | Gonzalez | Betty | Female | 32 |
| 29 | Wilson | Frank | Male | 41 |
| 30 | Anderson | Sharon | Female | 36 |
| 31 | Thomas | Greg | Male | 48 |
| 32 | Moore | Deborah | Female | 44 |
| 33 | Jackson | Ray | Male | 39 |
| 34 | White | Helen | Female | 43 |
| 35 | Harris | George | Male | 47 |
| 36 | Martin | Ruth | Female | 49 |
| 37 | Thompson | Edward | Male | 52 |
| 38 | Garcia | Margaret | Female | 53 |
| 39 | Martinez | Patrick | Male | 54 |
| 40 | Hernandez | Donna | Female | 56 |
| 41 | Lopez | Henry | Male | 58 |
| 42 | Gonzalez | Virginia | Female | 59 |
| 43 | Wilson | Albert | Male | 61 |
| 44 | Anderson | Joan | Female | 62 |
| 45 | Thomas | Arthur | Male | 63 |
| 46 | Moore | Gloria | Female | 64 |
| 47 | Jackson | Howard | Male | 65 |
| 48 | White | Theresa | Female | 66 |
| 49 | Harris | Louis | Male | 67 |
| 50 | Martin | Janet | Female | 68 |

## Language Replacement

The language object in configuration has options to replace all English strings with the language strings of your choice. This example straight out of Grok, replaces English with Spanish.

 ```javascript

    language: {
        searchLabel: "Buscar",                // Replaces "Search"
        rangeMinPlaceholder: "Mín ({min})",   // Replaces "Min ({min})"
        rangeMaxPlaceholder: "Máx ({max})",   // Replaces "Max ({max})"
        rangeSeparator: "a",                  // Replaces "to"
        enumAllOption: "Todos",               // Replaces "All"
        rowsPerPageLabel: "Filas por página:",// Replaces "Rows per page:"
        paginationPrevious: "Anterior",       // Replaces "Previous"
        paginationNext: "Siguiente",          // Replaces "Next"
        paginationAriaLabel: "Paginación de tabla", // Replaces "Table pagination"
        sortTitle: "Haga clic para ordenar"   // Replaces "Click to sort"
    }
```

 

- [      email ](mailto:?subject=JavaScript+Filter+Table+Documentation&body=https%3A%2F%2Fwww.richeyweb.com%2Fsoftware%2Fdocumentation%2Fjavascript-filter-table)
- [      facebook ](https://www.facebook.com/sharer/sharer.php?u=https%3A%2F%2Fwww.richeyweb.com%2Fsoftware%2Fdocumentation%2Fjavascript-filter-table)
- [      x-twitter ](https://twitter.com/intent/tweet?text=JavaScript+Filter+Table+Documentation%3A+https%3A%2F%2Fwww.richeyweb.com%2Fsoftware%2Fdocumentation%2Fjavascript-filter-table)
- [      linkedin ](http://www.linkedin.com/shareArticle?mini=true&url=https%3A%2F%2Fwww.richeyweb.com%2Fsoftware%2Fdocumentation%2Fjavascript-filter-table&title=JavaScript+Filter+Table+Documentation&summary=FilterTable+introduces+my+%22Stuff+I+Wrote+and+Never...)
- [      pinterest ](http://pinterest.com/pin/create/button/?url=https%3A%2F%2Fwww.richeyweb.com%2Fsoftware%2Fdocumentation%2Fjavascript-filter-table&media=https%3A%2F%2Fcdn.joomla.org%2Fimages%2Fjoomla-org-og.jpg&description=JavaScript+Filter+Table+Documentation)
 


 

   [  Previous article: How does the EU e-Privacy Directive extension compare to its competitors?   How does the EU e-Privacy Directive extension compare to its competitors? ](/software/documentation/how-does-the-eu-e-privacy-directive-extension-compare-to-its-competitors) [  Next article: Module - Cool Clock Documentation  Module - Cool Clock Documentation  ](/software/documentation/module-coolclock)  

##### We Value Your Privacy

 

We use cookies to enhance your experience and for traffic analysis. By continuing to visit this site you agree to our use of cookies.

[Privacy Policy](/privacy-policy)

 Details 

###### Google Tag Manager Items

- Ad Storage
- Ad User Data
- Ad Personalization
- Analytics Storage
- Functionality Storage
- Personalization Storage
- Security Storage
 
 

 

 

 

 

 Decline Accept
```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://www.richeyweb.com/#organization","name":"RicheyWeb","url":"https://www.richeyweb.com/","logo":{"@type":"ImageObject","url":"https://www.richeyweb.com/images/logo/richeyweb.svg","contentUrl":"https://www.richeyweb.com/images/logo/richeyweb.svg","width":{"@type":"QuantitativeValue","value":38,"unitCode":"PX"},"height":{"@type":"QuantitativeValue","value":38,"unitCode":"PX"},"@id":"https://www.richeyweb.com/#logo"},"image":{"@id":"https://www.richeyweb.com/#logo"},"sameAs":["https://x.com/ComRicheyweb","https://www.facebook.com/RicheyWebDev/","https://www.youtube.com/channel/UCxnVG8BwOvQRO7hVqNX7T2g","https://community.joomla.org/service-providers-directory/listings/115:richeyweb.html"],"description":"RicheyWeb is a custom software developer specializing in Joomla extensions.","ContactPoint":[{"@type":"ContactPoint","url":"https://www.richeyweb.com/contact-us","telephone":"903-873-8460","contactType":"Owner/Administrator","areaServed":["United States",{"@type":"Country","name":"United States","sameAs":["https://en.wikipedia.org/wiki/United_States","https://www.wikidata.org/wiki/Q30","https://g.co/kg/m/09c7w0"]},"European Union",{"@type":"AdministrativeArea","name":"European Union","sameAs":["https://en.wikipedia.org/wiki/European_Union","https://www.wikidata.org/wiki/Q458","https://g.co/kg/m/0_6t_z8"]},"United Kingdom",{"@type":"Country","name":"United Kingdom","sameAs":["https://en.wikipedia.org/wiki/United_Kingdom","https://www.wikidata.org/wiki/Q145","https://g.co/kg/m/07ssc"]},"Australia",{"@type":"Country","name":"Australia","sameAs":["https://en.wikipedia.org/wiki/Australia","https://www.wikidata.org/wiki/Q408","https://g.co/kg/m/0chghy"]},"Canada",{"@type":"Country","name":"Canada","sameAs":["https://en.wikipedia.org/wiki/Canada","https://www.wikidata.org/wiki/Q16","https://g.co/kg/m/0d060g"]},"Russia",{"@type":"Country","name":"Russia","sameAs":["https://en.wikipedia.org/wiki/Russia","https://www.wikidata.org/wiki/Q159","https://g.co/kg/m/06bnz"]},"China",{"@type":"Country","name":"China","sameAs":["https://en.wikipedia.org/wiki/China","https://www.wikidata.org/wiki/Q148","https://g.co/kg/m/0d05w3"]}],"availableLanguage":"en"},{"@type":"ContactPoint","url":"https://www.richeyweb.com/bugs","telephone":"903-873-8460","contactType":"Technical Support","areaServed":["United States",{"@type":"Country","name":"United States","sameAs":["https://en.wikipedia.org/wiki/United_States","https://www.wikidata.org/wiki/Q30","https://g.co/kg/m/09c7w0"]},"European Union",{"@type":"AdministrativeArea","name":"European Union","sameAs":["https://en.wikipedia.org/wiki/European_Union","https://www.wikidata.org/wiki/Q458","https://g.co/kg/m/0_6t_z8"]},"United Kingdom",{"@type":"Country","name":"United Kingdom","sameAs":["https://en.wikipedia.org/wiki/United_Kingdom","https://www.wikidata.org/wiki/Q145","https://g.co/kg/m/07ssc"]},"Australia",{"@type":"Country","name":"Australia","sameAs":["https://en.wikipedia.org/wiki/Australia","https://www.wikidata.org/wiki/Q408","https://g.co/kg/m/0chghy"]},"Canada",{"@type":"Country","name":"Canada","sameAs":["https://en.wikipedia.org/wiki/Canada","https://www.wikidata.org/wiki/Q16","https://g.co/kg/m/0d060g"]},"Russia",{"@type":"Country","name":"Russia","sameAs":["https://en.wikipedia.org/wiki/Russia","https://www.wikidata.org/wiki/Q159","https://g.co/kg/m/06bnz"]},"China",{"@type":"Country","name":"China","sameAs":["https://en.wikipedia.org/wiki/China","https://www.wikidata.org/wiki/Q148","https://g.co/kg/m/0d05w3"]}],"availableLanguage":"en"}],"knowsAbout":["Computer programming",{"@type":"Thing","name":"Computer programming","sameAs":["https://en.wikipedia.org/wiki/Computer_programming","https://www.wikidata.org/wiki/Q80006","https://g.co/kg/m/01mf_"]},"PHP",{"@type":"Thing","name":"PHP","sameAs":["https://en.wikipedia.org/wiki/PHP","https://www.wikidata.org/wiki/Q59","https://g.co/kg/m/060kv"]},"JavaScript",{"@type":"Thing","name":"JavaScript","sameAs":["https://en.wikipedia.org/wiki/JavaScript","https://www.wikidata.org/wiki/Q2005","https://g.co/kg/m/02p97"]},"arduino","Computer forensics",{"@type":"Thing","name":"Computer forensics","sameAs":["https://en.wikipedia.org/wiki/Computer_forensics","https://www.wikidata.org/wiki/Q878553","https://g.co/kg/m/02wxbd"]},"White hat",{"@type":"Thing","name":"White hat","sameAs":["https://en.wikipedia.org/wiki/White_hat_(computer_security)","https://www.wikidata.org/wiki/Q7995625","https://g.co/kg/m/03ns_5"]},"Search engine optimization",{"@type":"Thing","name":"Search engine optimization","sameAs":["https://en.wikipedia.org/wiki/Search_engine_optimization","https://www.wikidata.org/wiki/Q180711","https://g.co/kg/m/019qb_"]},"Search engine marketing",{"@type":"Thing","name":"Search engine marketing","sameAs":["https://en.wikipedia.org/wiki/Search_engine_marketing","https://www.wikidata.org/wiki/Q846132","https://g.co/kg/m/06mw8r"]},"Digital marketing",{"@type":"Thing","name":"Digital marketing","sameAs":["https://en.wikipedia.org/wiki/Digital_marketing","https://www.wikidata.org/wiki/Q1323528","https://g.co/kg/g/122hcnps"]},"Web hosting service",{"@type":"Thing","name":"Web hosting service","sameAs":["https://en.wikipedia.org/wiki/Web_hosting_service","https://www.wikidata.org/wiki/Q5892272","https://g.co/kg/m/014pz4"]},"Email hosting service",{"@type":"Thing","name":"Email hosting service","sameAs":["https://en.wikipedia.org/wiki/Email_hosting_service","https://www.wikidata.org/wiki/Q5368818","https://g.co/kg/m/09w60m"]},"Internet hosting service",{"@type":"Thing","name":"Internet hosting service","sameAs":["https://en.wikipedia.org/wiki/Internet_hosting_service","https://www.wikidata.org/wiki/Q1210425","https://g.co/kg/m/09w5yw"]},"Virtual hosting",{"@type":"Thing","name":"Virtual hosting","sameAs":["https://en.wikipedia.org/wiki/Virtual_hosting","https://www.wikidata.org/wiki/Q588365","https://g.co/kg/m/024mvh"]},"Web performance",{"@type":"Thing","name":"Web performance","sameAs":["https://en.wikipedia.org/wiki/Web_performance","https://www.wikidata.org/wiki/Q7978612","https://g.co/kg/m/0gfj3f1"]},"Web content management system",{"@type":"Thing","name":"Web content management system","sameAs":["https://en.wikipedia.org/wiki/Web_content_management_system","https://www.wikidata.org/wiki/Q45211","https://g.co/kg/m/0615s2"]},"Content management system",{"@type":"Thing","name":"Content management system","sameAs":["https://en.wikipedia.org/wiki/Content_management_system","https://www.wikidata.org/wiki/Q131093","https://g.co/kg/m/0k23c"]},"General Data Protection Regulation",{"@type":"Thing","name":"General Data Protection Regulation","sameAs":["https://en.wikipedia.org/wiki/General_Data_Protection_Regulation","https://www.wikidata.org/wiki/Q1172506","https://g.co/kg/m/0pk_7xs"]},"SERP",{"@type":"Thing","name":"SERP","sameAs":["https://en.wikipedia.org/wiki/SERP","https://www.wikidata.org/wiki/Q2205811","https://g.co/kg/g/11c5szp7kc"]},"Artificial intelligence",{"@type":"Thing","name":"Artificial intelligence","sameAs":["https://en.wikipedia.org/wiki/Artificial_intelligence","https://www.wikidata.org/wiki/Q11660","https://g.co/kg/m/0mkz"]},"Prompt engineering",{"@type":"Thing","name":"Prompt engineering","sameAs":["https://en.wikipedia.org/wiki/Prompt_engineering","https://www.wikidata.org/wiki/Q108941486","https://g.co/kg/g/11p6kpgt_n"]},"E-learning",{"@type":"Thing","name":"E-learning","sameAs":["https://en.wikipedia.org/wiki/E-learning_(theory)","https://www.wikidata.org/wiki/Q182250","https://g.co/kg/g/122czm1f"]},"Sharable Content Object Reference Model",{"@type":"Thing","name":"Sharable Content Object Reference Model","sameAs":["https://en.wikipedia.org/wiki/Sharable_Content_Object_Reference_Model","https://www.wikidata.org/wiki/Q827811","https://g.co/kg/m/06_40"]},"Experience API",{"@type":"Thing","name":"Experience API","sameAs":["https://en.wikipedia.org/wiki/Experience_API","https://www.wikidata.org/wiki/Q7807728","https://g.co/kg/g/1yw9ktxr8"]},"Joomla",{"@type":"Thing","name":"Joomla","sameAs":["https://en.wikipedia.org/wiki/Joomla","https://www.wikidata.org/wiki/Q13167","https://g.co/kg/m/07qb81"]},"Nginx",{"@type":"Thing","name":"Nginx","sameAs":["https://en.wikipedia.org/wiki/Nginx","https://www.wikidata.org/wiki/Q306144","https://g.co/kg/m/02qft91"]},"MySQL",{"@type":"Thing","name":"MySQL","sameAs":["https://en.wikipedia.org/wiki/MySQL","https://www.wikidata.org/wiki/Q850","https://g.co/kg/m/04y3k"]}],"areaServed":["United States",{"@type":"Country","name":"United States","sameAs":["https://en.wikipedia.org/wiki/United_States","https://www.wikidata.org/wiki/Q30","https://g.co/kg/m/09c7w0"]},"European Union",{"@type":"AdministrativeArea","name":"European Union","sameAs":["https://en.wikipedia.org/wiki/European_Union","https://www.wikidata.org/wiki/Q458","https://g.co/kg/m/0_6t_z8"]},"United Kingdom",{"@type":"Country","name":"United Kingdom","sameAs":["https://en.wikipedia.org/wiki/United_Kingdom","https://www.wikidata.org/wiki/Q145","https://g.co/kg/m/07ssc"]},"Australia",{"@type":"Country","name":"Australia","sameAs":["https://en.wikipedia.org/wiki/Australia","https://www.wikidata.org/wiki/Q408","https://g.co/kg/m/0chghy"]},"Canada",{"@type":"Country","name":"Canada","sameAs":["https://en.wikipedia.org/wiki/Canada","https://www.wikidata.org/wiki/Q16","https://g.co/kg/m/0d060g"]},"Russia",{"@type":"Country","name":"Russia","sameAs":["https://en.wikipedia.org/wiki/Russia","https://www.wikidata.org/wiki/Q159","https://g.co/kg/m/06bnz"]},"China",{"@type":"Country","name":"China","sameAs":["https://en.wikipedia.org/wiki/China","https://www.wikidata.org/wiki/Q148","https://g.co/kg/m/0d05w3"]}],"memberOf":["Mensa International",{"@type":"Organization","name":"Mensa International","sameAs":["https://en.wikipedia.org/wiki/Mensa_International","https://www.wikidata.org/wiki/Q184194","https://g.co/kg/m/0140pf"]},"National Rifle Association",{"@type":"Organization","name":"National Rifle Association","sameAs":["https://en.wikipedia.org/wiki/National_Rifle_Association","https://www.wikidata.org/wiki/Q863259","https://g.co/kg/m/0j6f9"]},"CompTIA",{"@type":"Organization","name":"CompTIA","sameAs":["https://en.wikipedia.org/wiki/CompTIA","https://www.wikidata.org/wiki/Q597534","https://g.co/kg/m/040shq"]},"ISFCE LLC",{"@type":"Organization","name":"ISFCE LLC","sameAs":["https://isfce.com","https://g.co/kg/g/11wxm5r0rg"]}],"hasCredential":[{"@type":"EducationalOccupationalCredential","name":"Joomla 3 Certified Administrator","credentialCategory":"Certification","description":"Administrator Exam is the first available Joomla! certification exam","recognizedBy":{"@type":"Organization","name":"Open Source Matters, Inc.","sameAs":["https://en.wikipedia.org/wiki/Open_Source_Matters,_Inc.","https://g.co/kg/g/11f00wvjhz"]},"url":"https://certification.joomla.org/certified-user-directory/michael-richey","about":["Content management system",{"@type":"Thing","name":"Content management system","sameAs":["https://en.wikipedia.org/wiki/Content_management_system","https://www.wikidata.org/wiki/Q131093","https://g.co/kg/m/0k23c"]},"Web content management system",{"@type":"Thing","name":"Web content management system","sameAs":["https://en.wikipedia.org/wiki/Web_content_management_system","https://www.wikidata.org/wiki/Q45211","https://g.co/kg/m/0615s2"]},"Joomla",{"@type":"Thing","name":"Joomla","sameAs":["https://en.wikipedia.org/wiki/Joomla","https://www.wikidata.org/wiki/Q13167","https://g.co/kg/m/07qb81"]}],"educationalLevel":"expert","image":{"@type":"ImageObject","url":"https://www.richeyweb.com/images/contact/badge.webp","contentUrl":"https://www.richeyweb.com/images/contact/badge.webp","width":{"@type":"QuantitativeValue","value":300,"unitCode":"PX"},"height":{"@type":"QuantitativeValue","value":86,"unitCode":"PX"},"caption":"Joomla 3 Certified Administrator"}},{"@type":"EducationalOccupationalCredential","name":"Certified Computer Examiner","credentialCategory":"Certification","description":"Internationally recognized computer forensics certifiecation","recognizedBy":{"@type":"Organization","name":"ISFCE LLC","sameAs":["https://en.wikipedia.org/wiki/ISFCE_LLC","https://g.co/kg/g/11wxm5r0rg"]},"url":"https://isfce.com/","about":["Digital forensics",{"@type":"Thing","name":"Digital forensics","sameAs":["https://en.wikipedia.org/wiki/Digital_forensics","https://www.wikidata.org/wiki/Q3246940","https://g.co/kg/m/0cnxzfx"]},"Computer forensics",{"@type":"Thing","name":"Computer forensics","sameAs":["https://en.wikipedia.org/wiki/Computer_forensics","https://www.wikidata.org/wiki/Q878553","https://g.co/kg/m/02wxbd"]},"Mobile device forensics",{"@type":"Thing","name":"Mobile device forensics","sameAs":["https://en.wikipedia.org/wiki/Mobile_device_forensics","https://www.wikidata.org/wiki/Q6887097","https://g.co/kg/m/06zp3tp"]},"Network forensics",{"@type":"Thing","name":"Network forensics","sameAs":["https://en.wikipedia.org/wiki/Network_forensics","https://www.wikidata.org/wiki/Q7001032","https://g.co/kg/m/05pb280"]},"Database forensics",{"@type":"Thing","name":"Database forensics","sameAs":["https://en.wikipedia.org/wiki/Database_forensics","https://www.wikidata.org/wiki/Q5227405","https://g.co/kg/m/0cgqsy"]}],"educationalLevel":"expert","image":{"@type":"ImageObject","url":"https://www.richeyweb.com/images/contact/isfce-cce.webp","contentUrl":"https://www.richeyweb.com/images/contact/isfce-cce.webp","width":{"@type":"QuantitativeValue","value":150,"unitCode":"PX"},"height":{"@type":"QuantitativeValue","value":150,"unitCode":"PX"},"caption":"Certified Computer Examiner"}}],"hasOfferCatalog":{"@type":"OfferCatalog","name":"Web Services","itemListElement":[{"@type":"Offer","itemOffered":{"@type":"Service","name":"Hosting"}},{"@type":"Offer","itemOffered":{"@type":"Service","name":"Development"}},{"@type":"Offer","itemOffered":{"@type":"Service","name":"Search Engine Optimization"}}]}},{"@type":"WebSite","@id":"https://www.richeyweb.com/#website","url":"https://www.richeyweb.com/","name":"RicheyWeb","publisher":{"@id":"https://www.richeyweb.com/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://www.richeyweb.com/search?q={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string","valueMaxLength":256,"valueMinLength":2,"valuePattern":"^[A-Za-z0-9\\s]+$"}},"creator":{"@id":"https://www.richeyweb.com/#organization"},"copyrightHolder":{"@id":"https://www.richeyweb.com/#organization"}},{"@type":"WebPage","@id":"https://www.richeyweb.com/software/documentation/javascript-filter-table#webpage","url":"https://www.richeyweb.com/software/documentation/javascript-filter-table","name":"JavaScript Filter Table Documentation","description":"Filter Table docs: Learn to use this JavaScript class with examples. Sort, filter, paginate tables. Config options and sample table included.","isPartOf":{"@id":"https://www.richeyweb.com/#website"},"about":{"@id":"https://www.richeyweb.com/#organization"},"inLanguage":"en-GB"},{"@type":"Article","headline":"JavaScript Filter Table Documentation","description":"Filter Table docs: Learn to use this JavaScript class with examples. Sort, filter, paginate tables. Config options and sample table included.","author":{"@type":"Person","name":"Michael Richey","url":"https://www.richeyweb.com/contact-us","@id":"https://www.richeyweb.com/contact-us#person"},"datePublished":"2025-04-07T00:00:00+00:00","dateModified":"2025-11-25T00:00:00+00:00","about":["JavaScript",{"@type":"Thing","name":"JavaScript","sameAs":["https://en.wikipedia.org/wiki/JavaScript","https://www.wikidata.org/wiki/Q2005","https://g.co/kg/m/02p97"]},"Filter",{"@type":"Thing","name":"Filter","sameAs":["https://en.wikipedia.org/wiki/Filter_(higher-order_function)","https://www.wikidata.org/wiki/Q108174","https://g.co/kg/m/02r83v7"]},"Table",{"@type":"Thing","name":"Table","sameAs":["https://en.wikipedia.org/wiki/Table_(information)","https://www.wikidata.org/wiki/Q14749","https://g.co/kg/m/01xqp7"]},"Technical documentation",{"@type":"Thing","name":"Technical documentation","sameAs":["https://en.wikipedia.org/wiki/Technical_documentation","https://www.wikidata.org/wiki/Q1413406","https://g.co/kg/m/0521g6n"]},"JavaScript Filter Table",{"@type":"Article","@id":"https://www.richeyweb.com/software/javascript/javascript-filter-table#article","name":"JavaScript Filter Table","sameAs":["https://en.wikipedia.org/wiki/JavaScript_Filter_Table"]}],"mentions":["HTML",{"@type":"Thing","name":"HTML","sameAs":["https://en.wikipedia.org/wiki/HTML","https://www.wikidata.org/wiki/Q8811","https://g.co/kg/m/03g20"]},"Bootstrap",{"@type":"Thing","name":"Bootstrap","sameAs":["https://en.wikipedia.org/wiki/Bootstrap_(front-end_framework)","https://g.co/kg/m/0j671ln"]},"Font Awesome",{"@type":"Thing","name":"Font Awesome","sameAs":["https://en.wikipedia.org/wiki/Font_Awesome","https://www.wikidata.org/wiki/Q19571791","https://g.co/kg/m/012pqk27"]},"Open-source software",{"@type":"Thing","name":"Open-source software","sameAs":["https://en.wikipedia.org/wiki/Open-source_software","https://www.wikidata.org/wiki/Q1130645","https://g.co/kg/m/01pjyj"]}],"@id":"https://www.richeyweb.com/software/documentation/javascript-filter-table#article","isPartOf":{"@id":"https://www.richeyweb.com/software/documentation/javascript-filter-table#webpage"},"publisher":{"@id":"https://www.richeyweb.com/#organization"},"keywords":"filtertable examples","articleSection":"Documentation","url":"https://www.richeyweb.com/software/documentation/javascript-filter-table","hasPart":[{"@id":"https://www.richeyweb.com/software/documentation/javascript-filter-table#articleindex-toc-what-filtertable-is_2_1"},{"@id":"https://www.richeyweb.com/software/documentation/javascript-filter-table#articleindex-toc-sample-table_3_2"},{"@id":"https://www.richeyweb.com/software/documentation/javascript-filter-table#articleindex-toc-getting-started_2_3"},{"@id":"https://www.richeyweb.com/software/documentation/javascript-filter-table#articleindex-toc-basic-activation_2_4"},{"@id":"https://www.richeyweb.com/software/documentation/javascript-filter-table#articleindex-toc-text-filter_3_5"},{"@id":"https://www.richeyweb.com/software/documentation/javascript-filter-table#articleindex-toc-enum-filter_3_6"},{"@id":"https://www.richeyweb.com/software/documentation/javascript-filter-table#articleindex-toc-range-filters_3_7"},{"@id":"https://www.richeyweb.com/software/documentation/javascript-filter-table#articleindex-toc-sortable-columns_3_8"},{"@id":"https://www.richeyweb.com/software/documentation/javascript-filter-table#articleindex-toc-pagination_3_9"},{"@id":"https://www.richeyweb.com/software/documentation/javascript-filter-table#articleindex-toc-kitchen-sink-example_2_10"},{"@id":"https://www.richeyweb.com/software/documentation/javascript-filter-table#articleindex-toc-language-replacement_2_11"}]},{"@id":"https://www.richeyweb.com/software/documentation/javascript-filter-table#articleindex","@type":"ItemList","name":"JavaScript Filter Table Documentation","numberOfItems":11,"itemListElement":[{"@type":"ListItem","position":1,"item":{"@type":"WPHeader","@id":"https://www.richeyweb.com/software/documentation/javascript-filter-table#articleindex-toc-what-filtertable-is_2_1","name":"What FilterTable Is","url":"https://www.richeyweb.com/software/documentation/javascript-filter-table#toc-what-filtertable-is_2_1"}},{"@type":"ListItem","position":2,"item":{"@type":"WPHeader","@id":"https://www.richeyweb.com/software/documentation/javascript-filter-table#articleindex-toc-sample-table_3_2","name":"Sample Table","url":"https://www.richeyweb.com/software/documentation/javascript-filter-table#toc-sample-table_3_2"}},{"@type":"ListItem","position":3,"item":{"@type":"WPHeader","@id":"https://www.richeyweb.com/software/documentation/javascript-filter-table#articleindex-toc-getting-started_2_3","name":"Getting Started","url":"https://www.richeyweb.com/software/documentation/javascript-filter-table#toc-getting-started_2_3"}},{"@type":"ListItem","position":4,"item":{"@type":"WPHeader","@id":"https://www.richeyweb.com/software/documentation/javascript-filter-table#articleindex-toc-basic-activation_2_4","name":"Basic Activation","url":"https://www.richeyweb.com/software/documentation/javascript-filter-table#toc-basic-activation_2_4"}},{"@type":"ListItem","position":5,"item":{"@type":"WPHeader","@id":"https://www.richeyweb.com/software/documentation/javascript-filter-table#articleindex-toc-text-filter_3_5","name":"Text Filter","url":"https://www.richeyweb.com/software/documentation/javascript-filter-table#toc-text-filter_3_5"}},{"@type":"ListItem","position":6,"item":{"@type":"WPHeader","@id":"https://www.richeyweb.com/software/documentation/javascript-filter-table#articleindex-toc-enum-filter_3_6","name":"Enum Filter","url":"https://www.richeyweb.com/software/documentation/javascript-filter-table#toc-enum-filter_3_6"}},{"@type":"ListItem","position":7,"item":{"@type":"WPHeader","@id":"https://www.richeyweb.com/software/documentation/javascript-filter-table#articleindex-toc-range-filters_3_7","name":"Range Filters","url":"https://www.richeyweb.com/software/documentation/javascript-filter-table#toc-range-filters_3_7"}},{"@type":"ListItem","position":8,"item":{"@type":"WPHeader","@id":"https://www.richeyweb.com/software/documentation/javascript-filter-table#articleindex-toc-sortable-columns_3_8","name":"Sortable Columns","url":"https://www.richeyweb.com/software/documentation/javascript-filter-table#toc-sortable-columns_3_8"}},{"@type":"ListItem","position":9,"item":{"@type":"WPHeader","@id":"https://www.richeyweb.com/software/documentation/javascript-filter-table#articleindex-toc-pagination_3_9","name":"Pagination","url":"https://www.richeyweb.com/software/documentation/javascript-filter-table#toc-pagination_3_9"}},{"@type":"ListItem","position":10,"item":{"@type":"WPHeader","@id":"https://www.richeyweb.com/software/documentation/javascript-filter-table#articleindex-toc-kitchen-sink-example_2_10","name":"Kitchen Sink Example","url":"https://www.richeyweb.com/software/documentation/javascript-filter-table#toc-kitchen-sink-example_2_10"}},{"@type":"ListItem","position":11,"item":{"@type":"WPHeader","@id":"https://www.richeyweb.com/software/documentation/javascript-filter-table#articleindex-toc-language-replacement_2_11","name":"Language Replacement","url":"https://www.richeyweb.com/software/documentation/javascript-filter-table#toc-language-replacement_2_11"}}]}]}
```
