JavaScript >> Javascript 文檔 >  >> jQuery

14 個 jQuery 實時搜索插件

實時搜索 是一種增強的搜索表單,它使用 AJAX 技術在同一視圖中提供結果或建議。這與從現代瀏覽器(如 Chrome、Firefox 或 Safari)獲得自動完成功能的常規 HTML 輸入字段不同。 實時搜索 通常是一個輸入字段,已被編程為從特定數據集中加載建議。

2017 年 7 月 6 日 :這篇文章被重寫以更新插件列表,並包括一些額外的非 jQuery 庫。

使用實時搜索 在您的應用程序中大大提高了您網站的用戶友好性。無論您使用什麼後端技術——PHP、Java、Python、Ruby——JavaScript 都是實現客戶端實時搜索的最佳選擇 功能。

在繼續之前,我想指出術語實時搜索 有點模棱兩可。該術語沒有權威定義。其他經常用於表示同一事物的術語是自動完成 然後提前輸入 .

我遇到了許多標記為實時搜索的解決方案 缺乏某些關鍵特徵。對於本文,我將僅列出 實時搜索 符合我上面定義的定義的解決方案。

1. Ajax 實時搜索

此列表中的第一個是非常了不起的開源實時搜索 jQuery插件。它有很好的文檔記錄,並且可以在 Chrome、Firefox、Safari、Opera 和 IE8 中完美運行。最令人印象深刻的特點是它可以以分頁表的形式返回結果! 這有多酷?

您可以通過以下鏈接了解更多信息:

  • 網站
  • 來源
  • 下載

2.語義 UI 搜索組件

如果你喜歡 CSS 框架,你應該看看 Semantic UI。他們有一個很酷的搜索組件,可讓您實現實時搜索 在您的表格上很容易。看看這個示例代碼:

HTML:

<div class="ui search">
  <input class="prompt" type="text" placeholder="Search GitHub...">
  <div class="results"></div>
</div>

JavaScript:

$('.ui.search')
  .search({
    apiSettings: {
      url: '//api.github.com/search/repositories?q={query}'
    },
    fields: {
      results : 'items',
      title   : 'name',
      url     : 'html_url'
    },
    minCharacters : 3
  })
;

它非常小巧但功能強大。如果您使用 API 設置選項,您可以進行自定義,例如將結果分組到類別中!。

語義 UI 也有不同的風格,專門為 React、Meteor、Ember 和 Angular 構建。查看他們的集成頁面以獲取完整列表。

要了解更多信息,請訪問以下鏈接。

  • 下載
  • 文檔
  • 演示

3. jQueryUI 自動完成

這是一個 jQuery 小部件,它是 jQuery UI 庫的一部分。該庫本身是一組基於 jQuery 構建的精選用戶界面組件、效果和主題。

自動完成帶有幾個模板來提供不同的實現。這是一個這樣的例子:

HTML:

<div class="ui-widget">
  <label for="birds">Birds: </label>
  <input id="birds">
</div>

<div class="ui-widget" style="margin-top:2em; font-family:Arial">
  Result:
  <div id="log" style="height: 200px; width: 300px; overflow: auto;" class="ui-widget-content"></div>
</div>

JavaScript:

$( function() {
  function log( message ) {
    $( "<div>" ).text( message ).prependTo( "#log" );
    $( "#log" ).scrollTop( 0 );
  }

  $( "#birds" ).autocomplete({
    source: "search.php",
    minLength: 2,
    select: function( event, ui ) {
      log( "Selected: " + ui.item.value + " aka " + ui.item.id );
    }
  });
} );

要了解更多信息,請訪問以下鏈接:

  • 來源
  • 演示

4. DevBridge jQuery 自動完成

DevBridge jQuery AutoComplete 是一個小型 JavaScript 庫,可讓您將常規文本輸入字段轉換為自動完成建議框。它的 API 龐大且有據可查,允許您執行相當多的不同配置。實現起來很簡單,看看這個例子:

HTML:

<input type="text" name="country" id="autocomplete"/>

JavaScript(AJAX 查找):

// AJAX Lookup
$('#autocomplete').autocomplete({
    serviceUrl: '/autocomplete/countries',
    onSelect: function (suggestion) {
        alert('You selected: ' + suggestion.value + ', ' + suggestion.data);
    }
});

JavaScript(本地查找):

var countries = [
   { value: 'Andorra', data: 'AD' },
   // ...
   { value: 'Zimbabwe', data: 'ZZ' }
];

$('#autocomplete').autocomplete({
    lookup: countries,
    onSelect: function (suggestion) {
        alert('You selected: ' + suggestion.value + ', ' + suggestion.data);
    }
});

要了解更多信息,請訪問以下鏈接:

  • 網站

5.輕鬆自動完成

EasyAutocomplete 是一個高度可定制的 jQuery 自動完成插件,具有所有常用功能。它支持 JSON、XML 和純文本格式的本地和遠程數據集。它還支持回調處理程序以及一些默認樣式。

這個插件與眾不同的是他們的模板功能。模板用於定義結果視圖。您可以創建自定義模板或使用可用的內置預設之一,其中包括:

  • 描述模板
  • 圖標右/左模板
  • 鏈接模板

用這個插件實現一個基本的自動完成非常簡單,看下面的示例代碼:

HTML:

<input id="countries"/>

JavaScript:

var options = {

  url: "resources/countries.json",

  getValue: "name",

  list: {
    match: {
      enabled: true
    }
  },

  theme: "square"
};

$("#countries").easyAutocomplete(options);

JSON:

[
  {"name": "Afghanistan", "code": "AF"},
  {"name": "Aland Islands", "code": "AX"},
  {"name": "Albania", "code": "AL"},
  {"name": "Algeria", "code": "DZ"},
  {"name": "American Samoa", "code": "AS"}
 ]

要了解更多信息,請訪問以下鏈接:

  • 網站
  • 下載
  • 來源

6. PixaBay jQuery-autoComplete

Pixabay.com 是一個免費的股票網站,有一個很棒的開源自動完成 jQuery 插件,您可以將其用於您的項目。最初他們使用的是 DevBridge 的 jQuery Autocomplete(列表中的第 4 位)。後來他們創建了一個分支並開始更新它以滿足他們自己的需求。最終,他們對原始源代碼進行了大量修改,最終獲得了自己的超輕量級優化插件。

該插件壓縮後只有 1.4 kB,支持多個數據源、回調和智能緩存系統。這是插件的一個示例實現:

JavaScript:

$('input[name="q"]').autoComplete({
  source: function(term, response){
    $.getJSON('/some/ajax/url/', { q: term }, function(data){ response(data); });
  }
});

要了解更多信息,請訪問以下鏈接:

  • 來源
  • 下載

7.馬可波羅

這是一個 jQuery 自動完成插件,由於當時缺乏可靠的自動完成插件而開發。它具有質量文檔、緩存、內存選擇、自定義樣式、回調處理和 WAI-ARIA 支持。它需要 jQuery v1.4.3 或更高版本,並支持所有現代瀏覽器(甚至 IE6!)。

實現馬可波羅非常簡單。這是一個示例實現:

HTML:

...
<head>
  <script src="jquery.min.js"></script>
  <script src="jquery.marcopolo.min.js"></script>
</head>
...
<body>
  <input type="text" name="userSearch" id="userSearch">
</body>

JavaScript:

$('#userSearch').marcoPolo({
  url: '/users/search',
  formatItem: function (data, $item) {
    return data.first_name + ' ' + data.last_name;
  },
  onSelect: function (data, $item) {
    window.location = data.profile_url;
  }
});

JSON(源數據):

[
  {
    "first_name": "James",
    "last_name": "Butler",
    "profile_url": "/users/78749",
  },
  {
    "first_name": "Win",
    "last_name": "Butler",
    "profile_url": "/users/41480",
  },
]

要了解更多信息,請訪問以下鏈接:

  • 來源
  • 演示

8. xDSoft 像 Google 一樣自動完成

這是一個輕量級的自動完成 jQuery 插件,支持本地和遠程數據源。它具有重音折疊功能。

這是一個示例代碼實現:

JavaScript

$('#remote_input2').autocomplete({source:[
 {
  url:"/component/jquery_plugins/?task=demodata&q=%QUERY%",
  type:'remote'
 },
 ["One","Two","Three"]
]});

要了解更多信息,請訪問以下鏈接:

  • 網站
  • 下載
  • 來源

9. jQuery Typeahead 搜索

jQuery Typeahead Search 是一個使用深度自定義選項構建的自動完成插件。它適用於 IE8+ 的所有現代瀏覽器,並支持多種內部和外部 AJAX 回調。

如果您查看 demo 頁面中,您會發現大量不同代碼實現的示例。

  • 網站
  • 演示
  • 下載

10. Algolia 自動完成

這個 JavaScript 庫能夠向搜索框添加快速且功能齊全的自動完成菜單。它可以與 Algolia 的搜索引擎結合使用。

它支持來自 IE9 的所有現代瀏覽器,可作為 jQuery 插件、Angular 指令和獨立庫使用。除了通常的功能外,它還具有安全功能,例如防止 XSS 攻擊。

  • 來源
  • 下載

11. ng-bootstrap 預輸入

如果您在項目中同時使用 Angular 和 Bootstrap,則應該使用 ng-bootstrap 框架。它有一個 Typeahead 就像一個普通的 jQuery 自動完成插件一樣工作的組件。

它支持模板、本地和遠程數據集,以及通常的 livesearch 特徵。這是 Wikipedia 搜索的部分代碼實現:

HTML:

<div class="form-group" [class.has-danger]="searchFailed">
  <label for="typeahead-http">Search for a wiki page:</label>
  <input id="typeahead-http" type="text" class="form-control" [(ngModel)]="model" [ngbTypeahead]="search" placeholder="Wikipedia search" />
  <span *ngIf="searching">searching...</span>
  <div class="form-control-feedback" *ngIf="searchFailed">Sorry, suggestions could not be loaded.</div>
</div>

打字稿:

@Injectable()
export class WikipediaService {
  constructor(private _jsonp: Jsonp) {}

  search(term: string) {
    if (term === '') {
      return Observable.of([]);
    }

    let wikiUrl = 'https://en.wikipedia.org/w/api.php';
    let params = new URLSearchParams();
    params.set('search', term);
    params.set('action', 'opensearch');
    params.set('format', 'json');
    params.set('callback', 'JSONP_CALLBACK');

    return this._jsonp
      .get(wikiUrl, {search: params})
      .map(response => <string[]> response.json()[1]);
  }
}

@Component({
  selector: 'ngbd-typeahead-http',
  templateUrl: './typeahead-http.html',
  providers: [WikipediaService],
  styles: [`.form-control { width: 300px; display: inline; }`]
})
export class NgbdTypeaheadHttp {
  model: any;
  searching = false;
  searchFailed = false;

  constructor(private _service: WikipediaService) {}

  search = (text$: Observable<string>) =>
    text$
      .debounceTime(300)
      .distinctUntilChanged()
      .do(() => this.searching = true)
      .switchMap(term =>
        this._service.search(term)
            .do(() => this.searchFailed = false)
            .catch(() => {
              this.searchFailed = true;
              return Observable.of([]);
            }))
      .do(() => this.searching = false);
}

要了解更多信息,請訪問以下鏈接:

  • 文檔
  • 下載

12.反應自動建議

你可以從標題看出這不是一個 jQuery 插件,但它仍然是 JavaScript。 React Autosuggest 是一個具有大量配置選項的開源庫。它對移動設備友好,符合 WAI-ARIA,完全可定制,並且與 Redux 和 Flux 完美集成。

設置需要一些努力,但一旦設置,您將獲得實時搜索 完全按照您想要的方式運行的插件。下面是該組件的部分代碼示例:

  return (
    <Autosuggest
      suggestions={suggestions}
      onSuggestionsFetchRequested={this.onSuggestionsFetchRequested}
      onSuggestionsClearRequested={this.onSuggestionsClearRequested}
      getSuggestionValue={getSuggestionValue}
      renderSuggestion={renderSuggestion}
      inputProps={inputProps}
    />
  );

儘管源文檔說明了使用本地數組作為數據源的解決方案,但您可以輕鬆地將其與 onSuggestionsFetchRequested() 中的遠程 fetch 調用交換 功能。

要了解更多信息,請訪問以下鏈接:

  • 網站
  • 來源

13. W3Schools Ajax 實時搜索

如果您希望避免依賴並使用純 JavaScript 實現解決方案,那麼您應該嘗試 w3schools.com 提供的解決方案 .

本示例中使用的後端使用的是 PHP 服務器。顯然,您可以用您選擇的服務器技術代替它。該代碼需要 XML 格式的數據。您也可以重構代碼以接受 JSON 格式。

這個解決方案的偉大之處在於它適用於所有現代瀏覽器和 IE5 之前的舊瀏覽器!

HTML:

<form>
  <input type="text" size="30" onkeyup="showResult(this.value)">
  <div id="livesearch"></div>
</form>

JavaScript:

function showResult(str) {
  if (str.length==0) {
    document.getElementById("livesearch").innerHTML="";
    document.getElementById("livesearch").style.border="0px";
    return;
  }
  if (window.XMLHttpRequest) {
    // code for IE7+, Firefox, Chrome, Opera, Safari
    xmlhttp=new XMLHttpRequest();
  } else {  // code for IE6, IE5
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
  xmlhttp.onreadystatechange=function() {
    if (this.readyState==4 && this.status==200) {
      document.getElementById("livesearch").innerHTML=this.responseText;
      document.getElementById("livesearch").style.border="1px solid #A5ACB2";
    }
  }
  xmlhttp.open("GET","livesearch.php?q="+str,true);
  xmlhttp.send();
}

要了解更多信息,請訪問以下鏈接:

  • 源碼+演示

14. WordPress 實時搜索

如果您使用 WordPress,您會很高興知道您可以實現 實時搜索 幾乎沒有編碼。您只需要安裝和設置一個帶有 live search 的 WordPress 插件 功能。最受歡迎的是 Dave 的 WordPress 實時搜索 目前有超過 10,000 次活動安裝。它與大多數主題兼容,帶有多個可配置選項,並且易於集成且無需大驚小怪。它還附帶一個 YouTube 教程,演示了整個設置過程。

要了解更多信息,請訪問以下鏈接:

  • 下載
  • 文檔

總結

我希望這個列表可以幫助您選擇合適的實時搜索 您的項目的解決方案。根據您的經驗和項目環境,有些比其他的更容易實施和定制。

我還沒有列出其他無數有能力的解決方案。也許您可以通過在下面的評論中列出它們來提供幫助。


Tutorial JavaScript 教程
  1. 9 個面向 Web 開發人員的最佳 Coursera 課程 + 項目

  2. 在 Javascript 中使用 setInterval()

  3. 編寫乾淨的 Redux 連接組件的模式

  4. Lume,Deno 最簡單的靜態站點生成器

  5. Farrow:新的一年裡的新 Web 框架

  6. 16 多篇四月學習 JavaScript 的文章

  7. Nginx 正在嘗試打開文件而不是重定向到代理

  1. 使用 Google Drive API v3 將文件上傳到驅動器(在 React 中)

  2. JavaScript 模塊:從 IIFE 到 CommonJS 再到 ES6 模塊

  3. 你對 React 中的本地狀態與全局狀態有何看法?

  4. 使用 Raspberry Pi 跟踪貓砂盆中的貓活動模式

  5. JavaScript RegEx 確定電子郵件的域(例如 yahoo.com)

  6. 帶有 React 的無頭 WordPress

  7. 如何使用 JavaScript 集成網絡攝像頭

  1. Express API 的單元測試要點:分步指南

  2. 10 個基於 jQuery 的文件管理器插件

  3. 使用 LocalStorage 持久化數據

  4. 反應引導 5