oziSearch

Version: 3.0.0Updated: 2026-05-27

Description

Real-time search, filtering and pagination plugin for web interfaces. Locates, highlights and organizes elements in the DOM as the user types, without page reload. Supports any HTML structure — simple lists, complex cards, hierarchical menus and body text.

Incorporates declarative pagination — transforms any list of elements into navigable pages with automatic ellipsis, without relying on <table> or DataTables.


Examples

[1] Simple search

Alabama
Alaska
Arizona
California
Florida
Georgia
New York
Texas
Washington
<input type="text" class="form-control"
       data-ozi-search="search-simple"
       placeholder="Search...">

<div class="search-simple">Alabama</div>
<div class="search-simple">Alaska</div>
<div class="search-simple">Arizona</div>

[2] Multi-word search with highlight

Multiple simultaneous words with highlight of found terms.

Alabama
Alaska
New Mexico
New York
New Hampshire
New Jersey
Texas
Washington
<input type="text" class="form-control"
       data-ozi-search="items"
       data-ozi-search-multi="true"
       data-ozi-search-highlight="true"
       placeholder="Search with multiple words...">

[3] Highlight in body text — without filtering

Highlights found terms without hiding content. Ideal for searching texts and articles.

There are many variations of passages of Lorem Ipsum available, but the majority have suffered alteration in some form, by injected humour, or randomised words which don't look even slightly believable.

If you are going to use a passage of Lorem Ipsum, you need to be sure there isn't anything embarrassing hidden in the middle of text. All the Lorem Ipsum generators on the Internet tend to repeat predefined chunks as necessary.

<input type="text" class="form-control"
       data-ozi-search="content"
       data-ozi-search-multi="true"
       data-ozi-search-highlight="bg-warning text-dark fw-bold"
       data-ozi-search-no-filter="true"
       placeholder="Type to highlight...">

<div class="content">
    <p>Article or content text...</p>
</div>

data-ozi-search-highlight accepts CSS classes — use any Bootstrap or custom class.


[4] Search in complex cards

Works in any HTML structure — doesn't need to be a simple list.

ID #1 | Admin Admin
Created: 03/14/2026
ID #2 | Distributor Distributor
Created: 03/14/2026
ID #3 | John Reseller Reseller
Created: 03/14/2026
<input type="text" class="form-control"
       data-ozi-search="search-list"
       data-ozi-search-highlight="bg-warning text-dark fw-bold"
       placeholder="Search...">

<div class="search-list">
    <strong>ID #1 | Admin</strong>
    <span class="badge bg-primary">Admin</span>
</div>
<div class="search-list">
    <strong>ID #2 | Distributor</strong>
    <span class="badge bg-success">Distributor</span>
</div>

[5] Search with hierarchical groups

Automatically hides groups without visible items — ideal for side menus.

  • 🏍 Motorcycles
    • Honda
    • Yamaha
    • BMW
  • 🚗 Cars
    • Ford
    • Audi
    • GM
<input type="text" class="form-control"
       data-ozi-search="search-items"
       data-ozi-search-group="search-group"
       data-ozi-search-multi="true"
       placeholder="Search in menu...">

<li class="search-group">
    <span>Motorcycles</span>
    <ul>
        <li class="search-items"><a>Honda</a></li>
        <li class="search-items"><a>Yamaha</a></li>
    </ul>
</li>
<li class="search-group">
    <span>Cars</span>
    <ul>
        <li class="search-items"><a>Ford</a></li>
        <li class="search-items"><a>Audi</a></li>
    </ul>
</li>

[6] Declarative pagination

Transforms any list into navigable pages. The <nav> is automatically injected inside the container.

Alabama — South Region
Alaska — West Region
Arizona — West Region
California — West Region
Florida — South Region
Georgia — South Region
New York — Northeast Region
Texas — South Region
Washington — West Region
Illinois — Midwest Region
Ohio — Midwest Region
Pennsylvania — Northeast Region
<input type="text" class="form-control"
    data-ozi-search="search-list"
    data-ozi-search-highlight="bg-warning text-dark fw-bold"
    data-ozi-search-pagination="5"
    data-ozi-search-pagination-id="searchPagination"
    placeholder="Search...">

<div id="searchPagination">
    <div class="search-list">Item 1</div>
    <div class="search-list">Item 2</div>
    <div class="search-list">Item 3</div>
    <!-- pagination nav automatically injected here -->
</div>
  • data-ozi-search-pagination="5" → 5 items per page
  • data-ozi-search-pagination-id → container ID — required
  • On filter → recalculates pages and returns to page 1
  • Automatic ellipsis: ‹ 1 ... 4 5 6 ... 10 ›

Features

  • Real-time search — no reload, immediate response
  • Multiple words — each term filtered separately
  • Configurable highlight — default or custom CSS class
  • Highlight-only mode — highlights without hiding items
  • Dynamic groups — hides groups without visible items
  • Declarative pagination — any list becomes navigable pages
  • Works in any HTML — lists, cards, menus, body text
  • Event delegation — no need to reinitialize after dynamic renders

HTML Attributes

[1] Search Target

Attribute Description
data-ozi-search Selector of searched and filtered elements
data-ozi-search-group Related groups — hidden when without visible items

[2] Behavior

Attribute Description
data-ozi-search-min Minimum characters to start the search
data-ozi-search-words Enables search by multiple space-separated terms
data-ozi-search-multi Alias for data-ozi-search-words
data-ozi-search-no-filter Keeps items visible — applies highlight only

[3] Highlight

Value Behavior
true, 1 or empty Uses the default class ozi-search-highlight
false or 0 Disables highlight
Any text Uses the value as a CSS class — e.g. bg-warning text-dark fw-bold

[4] Pagination

Attribute Default Description
data-ozi-search-pagination 10 Enables pagination — value defines items per page
data-ozi-search-pagination-id Required — ID of the container wrapping the items

CSS Tokens

:root {
    /* Pagination */
    --ozi-search-pagination-gap: 4px;
    --ozi-search-pagination-radius: 0.375rem;
    --ozi-search-pagination-height: 34px;
    --ozi-search-pagination-min-width: 34px;
    --ozi-search-pagination-font-size: 0.875rem;
    --ozi-search-pagination-color: #495057;
    --ozi-search-pagination-bg: #fff;
    --ozi-search-pagination-border: #dee2e6;
    --ozi-search-pagination-hover-bg: #f8f9fa;
    --ozi-search-pagination-active-bg: #0d6efd;
    --ozi-search-pagination-active-color: #fff;
    --ozi-search-pagination-disabled-color: #adb5bd;

    /* Highlight */
    --ozi-search-highlight-bg: #fff3cd;
    --ozi-search-highlight-color: #212529;
}

Removed in v2.0.0

Attribute Reason
data-ozi-search-menu Hierarchical menu functionality discontinued